Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 我做的java的 进制转化问题,请大家的宝贵意见。。
develop8





发贴: 129
积分: 0
于 2006-05-31 08:19 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
/*这个是 thingking in java 3 Controlling Program Flow 当中的例子:
我不理解他的转化原理是什么?请简单的分析给我好吗?
学了半年多java了,对位操作还是很模糊,实际中不知道什么使用它,
请告诉我怎么能学好位操作符?
*/
class test22{
  public static void main(String []args){
  for(int i=-10;i<0;i++){
  printBinary(i);
  printBinary(Math.abs(i));
  System.out.println("_____________________");
}
  }
static void printBinary( int i) {
System.out.println(" int: " + i + " binary: ");
System.out.print(" ");
for(int j = 31; j >= 0; j--)
if(((1 << j) & i) != 0)
System.out.print("1");
else
System.out.print("0");
System.out.println();
}
}
/*我做的方式是用算术的方法转化,但是负数我不会转了,
请大家指点 !!
可能没有前面的程序高明,因为我对移位的操作不太熟悉,
缺乏很多基础的原理,请高手们多讲点这方面的基础知识好吗
位操作在编程当中很少用是吗?

*/
class convert2{
public static void main(String[]args){
  for(int i=0;i<9;i++)
  m(i);
}
public static void m(int binary){
  int a=binary;
int []ax=new int[64];
int i=0;
String s="";
String s2="0";
String s3="";
for(;;){
if(a>=2){
ax[i++]=a%2;
a=a/2;
continue;
}
ax[i]=a;
break;
}
for(;i>=0;i--)
s=s+new Integer(ax[i]).toString();
//System.out.println(binary+"="+s);
for(int j=0;j<32-s.length();j++)
s3=s3+s2;
System.out.println("\tint\t"+binary+" binary:\n"+s3+s);
System.out.println("______________________");

}
}

—————————————————————————
// int 类型转化成 16进制。
// 在我学习了java半年多之后,才有能力解决的基础问题。
// 我是不是很苯?
//在命令行里输入 任何一个int型数据,就得到转化的16进制。
import java.util.*;
public class convertor{
public static void main(String[]args){
  
  Map m = new HashMap();
m.put(new String("0"),new String("0"));
m.put(new String("1"),new String("1"));
m.put(new String("2"),new String("2"));
m.put(new String("3"),new String("3"));
m.put(new String("4"),new String("4"));
m.put(new String("5"),new String("5"));
m.put(new String("6"),new String("6"));
m.put(new String("7"),new String("7"));
m.put(new String("8"),new String("8"));
m.put(new String("9"),new String("9"));
m.put(new String("10"),new String("A"));
m.put(new String("11"),new String("B"));
m.put(new String("12"),new String("C"));
m.put(new String("13"),new String("D"));
m.put(new String("14"),new String("E"));
m.put(new String("15"),new String("F"));
int ax[]=new int[10];
String s="";
int i=0;
int a;
try{

a=Integer.parseInt(args[0]);
for(;;){
if(a>=16){
ax[i++]=a%16;
a=a/16;
continue;
}
ax[i]=a;
break;
}

for(;i>=0;i--){
//System.out.println("ax["+i+"]="+ax[i]);
s=s+m.get(new Integer(ax[i]).toString());
}
System.out.println(args[0]+"="+s);

}catch(NumberFormatException e){}
}
}
——————————————————————————————
//输入:0xFFFF ,会转化成自然数。
//0x后面的字符必须要大写的,因为我在声明的时候用的是大写的,
//如果你嫌麻烦你就把ABCDEF改成abcdef就可以了,那么你就可以用小写的格式了:比如0xffff.
//我做的这种方法可能很笨,不知道用什么办法能更好?

import java.util.*;
public class decoder{
public static void main(String[]args){
  
  Map m = new HashMap();
m.put(new String("0"),new String("0"));
m.put(new String("1"),new String("1"));
m.put(new String("2"),new String("2"));
m.put(new String("3"),new String("3"));
m.put(new String("4"),new String("4"));
m.put(new String("5"),new String("5"));
m.put(new String("6"),new String("6"));
m.put(new String("7"),new String("7"));
m.put(new String("8"),new String("8"));
m.put(new String("9"),new String("9"));
m.put(new String("A"),new String("10"));
m.put(new String("B"),new String("11"));
m.put(new String("C"),new String("12"));
m.put(new String("D"),new String("13"));
m.put(new String("E"),new String("14"));
m.put(new String("F"),new String("15"));

int i=3;

String s=args[0];

try{
int a=Integer.parseInt((String)m.get(new Character(s.charAt(2)).toString()));
// System.out.println("a="+a);
for(;;){
if(i<s.length()){
a=a*16+Integer.parseInt((String)m.get(new Character(s.charAt(i++)).toString()));
continue;
}

break;
}

System.out.print(args[0]+"="+a);

}catch(NumberFormatException e){System.out.println(e);}
}
}
——————————————————
以上3个程序都是在昨天下午4点多到晚上做的。才会转化数据类型了。
但负数的还不会。(虽然在jdk里有转化进制的方法,但我想自己也必须会这些基础的东西。我知道我做的方法很苯,
大家有更好办法请交我啊?)

thingking in java 里说:
Note that the high bit represents the sign: 0 means positive and 1 means negative.
The output for the int portion looks like this:

这里高位(high bit)指的是哪个?是最左边的那一个位吗?

-1, int: -1, binary:
11111111111111111111111111111111
+1, int: 1, binary:
00000000000000000000000000000001
maxpos, int: 2147483647, binary:
01111111111111111111111111111111
maxneg, int: -2147483648, binary:
10000000000000000000000000000000
i, int: 59081716, binary:
00000011100001011000001111110100
~i, int: -59081717, binary:
11111100011110100111110000001011
最后发表我对java的小见解:象我这样的外行对系统知识这么差的人,都能做出DOS 的 dir 命令了,
可见java的厉害了,即使不知道基础的知识,只要会调用jdk 中的方法就一切都ok了,
java是高级语言,隐藏了系统的知识。。有人说要想在IT 里混,基础知识要牢固,
这样才能学好高级语言,不知道大家对这个观点同意吗?要想学好基础知识那么你必须
要学汇编语言吗?


scottlai edited on 2006-05-31 09:02


话题树型展开
人气 标题 作者 字数 发贴时间
6011 我做的java的 进制转化问题,请大家的宝贵意见。。 develop8 4998 2006-05-31 08:19
4457 Re:我做的java的 进制转化问题,请大家的宝贵意见。。 lisliefor 281 2006-05-31 12:59
4602 Re:我做的java的 进制转化问题,请大家的宝贵意见。。 prince1234 179 2006-05-31 16:26
4596 Re:我做的java的 进制转化问题,请大家的宝贵意见。。 develop8 101 2006-06-01 07:36

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923