黑马程序员技术交流社区
标题:
请求解答进制转换的疑问
[打印本页]
作者:
trhthyj
时间:
2014-4-22 00:00
标题:
请求解答进制转换的疑问
问题在代码中:
class ToBinHex
{
public static void main(String[] args)
{
trans(8709,15,4);
}
public static void trans(int num,int base,int offset)//base是要与上的数,offset是右移的位数
{
char[] chs={'0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F'};
char[] arr=new char[32];
int pos=arr.length;
while(num!=0)
{
int temp=num&base;
arr[--pos]=chs[temp];
num=num>>>offset;
}
for(int x=pos;x<arr.length;x++)
{
System.out.print(arr[x]);
}
//为什么把if语句放在这里打印出来“22050”,而放在trans函数第一行就打印的是“2205”??
if(num==0)
{
System.out.println(0);
return;
}
}
}
复制代码
作者:
ノtrack
时间:
2014-4-22 00:11
class ToBinHex
{
public static void main(String[] args)
{
trans(8709,15,4);
}
public static void trans(int num,int base,int offset)//base是要与上的数,offset是右移的位数
{
char[] chs={'0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F'};
char[] arr=new char[32];
int pos=arr.length;
while(num!=0)
{
int temp=num&base;
arr[--pos]=chs[temp];
num=num>>>offset;
}
for(int x=pos;x<arr.length;x++)
{
System.out.print(arr[x]);
}
//你执行完了 num==0 了 就在打印一次0呗, 放在第一行 刚开始没满足嘛 ,所以咯,, 就是程序执行顺序问题 搞定
if(num==0)
{
System.out.println(0);
return;
}
}
}
复制代码
作者:
ノtrack
时间:
2014-4-22 00:13
num会每次无符号右移嘛 对不对, 刚开始不是0 就不会进入 右移最后等于0了 就会执行输出0
注意程序结构顺序就好了
亲 晚安 睡觉了
作者:
trhthyj
时间:
2014-4-22 07:36
好的,谢谢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2