黑马程序员技术交流社区
标题:
进制转换的问题
[打印本页]
作者:
JYcainiao
时间:
2015-10-9 09:20
标题:
进制转换的问题
本帖最后由 JYcainiao 于 2015-10-9 09:21 编辑
//定义一个函数 用来计算一个数的二进制 八进制 十六进制
class jinzhiArr
{
//二进制
public static void toBin(int num)
{
int[] arr=new int[32];
for (int pos=arr.length-1;pos>=0 ; pos--)//定义一个指针,将%出来的数
{
arr[pos]=num & 1; //arr[pos]=num %2只有当num为正数时 才有正确结果 所以不用这个
num=num>>1; //num=num /2; 一样的效果
}
bianliArr(arr);
}
//八进制
public static void toBa(int num)
{
int[] arr=new int[?];
//
这里应该给数组定义为多少呢?
for (int pos=arr.length-1;pos>=0 ; pos--)//定义一个指针,将%出来的数
{
arr[pos]=num & 7; //arr[pos]=num %2只有当num为正数时 才有正确结果 所以不用这个
num=num>>3; //num=num /8; 一样的效果
}
bianliArr(arr);
}
//十六进制
public static void toHex(int num)
{
int[] arr=new int[8];
for (int pos=arr.length-1;pos>=0 ; pos--)//定义一个指针,将%出来的数
{
arr[pos]=num & 15; //arr[pos]=num %2只有当num为正数时 才有正确结果 所以不用这个
num=num>>4; //num=num /16; 一样的效果
}
bianliArr(arr);
}
public static void bianliArr(int[] arr)
{
System.out.print("[");
for (int x=0;x<arr.length ;x++ )
{
if (x<arr.length-1)
System.out.print(arr[x]+",");
else
System.out.print(arr[x]);
}
System.out.print("]");
}
public static void main(String[] args)
{
toHex(6);
}
}
作者:
heshiwei
时间:
2015-10-9 09:47
JDK是提供对应的API的
作者:
JYcainiao
时间:
2015-10-9 11:24
heshiwei 发表于 2015-10-9 09:47
JDK是提供对应的API的
什么意思啊 ? 表示不懂啊
作者:
C威
时间:
2015-10-9 11:43
嗯嗯,不错不错!!!!!!!!!!!!!
作者:
JYcainiao
时间:
2015-10-9 12:48
C威 发表于 2015-10-9 11:43
嗯嗯,不错不错!!!!!!!!!!!!!
什么不错啊 我是问问题的啊
作者:
iq513394
时间:
2015-10-9 17:08
本帖最后由 iq513394 于 2015-10-9 17:12 编辑
java中int 是32位(二进制位)的,所以在toBin中new int[32], 而toBa中则为32/3(从右往左每3位二进制位为一个八进制位)为10.6,得要11。
toHex中则为32/4(从右往左每3位二进制位为一个八进制位)为8。
作者:
dzzheng3
时间:
2015-10-9 19:40
z这长度没法确定啊,但可以倒着打印出来,直到除的最后一个数是小于8的
作者:
斯文阿昊
时间:
2015-10-9 20:27
写的不错,学习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2