黑马程序员
进制转换
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
十进制转换为二进制和十六进制两种方法
一:查表法
思想:先建立一个表里面存放表示各种进制所需要的数,相应的最后位与相应进制的基数相与所得到的数恰好为表中所需数的下标。例:60二进制表示为:0000 0000 0011 1100 最后四位与15相与得到12,即十六进制中表示为C,而12恰好为表中C的下标。
1:十进制转换为二进制
publicstaticvoid toHex(int num){
//建表
char[] ch={'0','1'};
//定义数组存放结果
char[] result=newchar[32];
int pos=result.length;
while(num!=0){
int temp=num&1;
//查表
result[--pos]=ch[temp];
num=num>>>1;
}
//输出结果
for(int i=pos;i<result.length;i++)
System.out.print(result[i]);
System.out.println();
}
2:十进制转换为十六进制
publicstaticvoid toHex(int num){
//建表
char[] ch={'0','1','2','3','4','5','6','7','8','9','A',
'B','C','D','E','F'};
//定义数组存放结果
char[] result=newchar[8];
int pos=result.length;
while(num!=0){
int temp=num&15;
//查表
result[--pos]=ch[temp];
num=num>>>4;
}
//输出结果
for(int i=pos;i<result.length;i++)
System.out.print(result[i]);
}
3:由1,2总结十进制转换为其他进制通用的方法
publicstaticvoid trans(int num,int base,int offset){
//建表
char[] ch={'0','1','2','3','4','5','6','7','8','9','A',
'B','C','D','E','F'};
//定义数组存放结果
char[] result=newchar[32];
int pos=result.length;
while(num!=0){
int temp=num&base;
//查表
result[--pos]=ch[temp];
//移位
num=num>>>offset;
}
//输出结果
for(int i=pos;i<result.length;i++)
System.out.print(result[i]);
}
二:取余法
思想:需转换的数与相应的进制取余,按顺序所得到的数即可得到此进制该位的数。逆序输出所得到的的数即为所得结果。
1:十进制转换为二进制
publicstaticvoid trans(int num,int index){
//定义数组a存放转换结果
int[] a=newint[32];
int i=0;
//当被除数为零时停止运算
while(num>0){
//将余数即转换的每一位存入数组
a[i++]=num%index;//取余
num=num/index;
}
//输出结果
for(intj=i-1;j>=0;j--){
System.out.print(a[j]);
}
System.out.println();
}
2:十进制转换为十六进制
publicstaticvoid trans1(int num){
//利用StringBuffer类创建字符串序列s存放转换结果
StringBuffer s=new StringBuffer();
//每次将十进制的二进制最后四位与1111即15相与即可得到转换结果
for(int x=0;x<8;x++){
int temp=num&15;
//如果大于9需用字母表示,需判断
if(temp>9){
//将数字装换为字母表示
s.append((char)(temp-10+'A'));
}
else
s.append(temp);
num=num>>>4;
}
//逆序输出
System.out.println(s.reverse());
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
详细请查看:<a href="http://edu.csdn.net"target="blank">http://edu.csdn.net</a>