黑马程序员技术交流社区
标题:
关于进制转换代码的问题
[打印本页]
作者:
张龙跃
时间:
2013-4-25 21:05
标题:
关于进制转换代码的问题
本帖最后由 张龙跃 于 2013-4-25 23:59 编辑
十进制转二进制的代码我能看懂
class haha
{
public static void main(String [] args)
{
toBin(6);
}
public static void toBin(int num)
{
StringBuffer sb = new StringBuffer();
while (num > 0)
{
sb.append (num%2);
num = num / 2;
}
System.out.println(sb.reverse ());
}
}
但十进制转十六进制的看不懂啊
class ArrayTest5
{
public static void main(String[] args)
{
toHex(60);
}
public static void toHex(int num)
{
StringBuffer sb = new StringBuffer();
for(int x=0; x<8; x++)
{
int temp = num & 15;
if(temp>9)
sb.append((char)(temp-10+'A'));
else
sb.append(temp);
num = num >>> 4;
}
System.out.println(sb.reverse());
}
}
我对进制转换很迷糊,看了好几遍都搞不太清楚,我想问下,进制转换对以后影响大不大啊,大家是怎么搞的?
作者:
wangyougu010
时间:
2013-4-25 21:49
刚开始学的时候,努力理解以下,学到后边调用方法就能实现进制转换,不用自己去做.但是既然是做这行的,即使用不到,多懂一点,至少显得专业,不是吗.或者说,出去做程序员,基本的问题不懂, 显得有点小白.对吧
作者:
白飞金
时间:
2013-4-25 21:55
for(int x=0; x<8; x++)
{
int temp = num & 15;
if(temp>9)
sb.append((char)(temp-10+'A'));
else
sb.append(temp);
num = num >>> 4;
}
这是对十进制数进行十六进制的转换,int temp = num & 15;是对num的二进制数与15想与,变成十六进制数。
如果回答的不对,还请各位不要见笑。
作者:
337091921
时间:
2013-4-25 22:00
class ArrayTest5
{
public static void main(String[] args)
{
toHex(60);
}
public static void toHex(int num)
{
StringBuffer sb = new StringBuffer();
for(int x=0; x<8; x++)
{
int temp = num & 15;//因为为了获取后四位,要&1111,换成十进制也就是15
if(temp>9)
sb.append((char)(temp-10+'A'));//这一步是:当求出的十六进制大于9时,把它转换为”字符“
else
sb.append(temp);
num = num >>> 4;//这是右移四位为了获取这个数的下个后四位
}
System.out.println(sb.reverse());
}
}
作者:
郭军亮
时间:
2013-4-25 22:29
注释如下 希望你能明白
class ArrayTest5
{
public static void main(String[] args)
{
toHex(60);
}
public static void toHex(int num)
{
StringBuffer sb = new StringBuffer()
;//构造一个字符缓冲区,这个你应该明白吧
for(int x=0; x<8; x++)/
/循环8次是因为一个int型数占32位,每次把4位转换成一个16进制数,一共需要8次转换完。
{
int temp = num & 15;
//15的二进制数是1111,num与1111是为了将num的二进制的最低四位提取出来存入temp中。至于用15相与是因为16进制需要4位来表示。
if(temp>9)
//如果temp大于9,则这个数最小是10最大是15,需要用(A-F)来表示。
sb.append((char)(temp-10+'A'));
//若为10,则为(0+A=A)正好用A表示,11多的话(11-10=1 1-A=B)正好用B来表示。以此类推。。。。
else
sb.append(temp);
//1--9的数还用1--9表示。这样便得到了num的二进制的低四位的16进制了,将temp的值放入sb中
num = num >>> 4;
//然后将num的二进制向右移四位,将已经转换为16进制的低四位移出去。
}//循环完后,便将所有的位数都转换成了16进制
System.out.println(sb.reverse())
;//由于装入的顺序是由低位到高位的顺序,所以打印的时候要反转过来。。。
}
}
希望我的注释你能够懂。。。。。
作者:
袁梦希
时间:
2013-4-25 22:31
楼上的注释好全啊,功底比较深,鼓励一下 {:soso_e179:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2