请用移位的方式打印出一个十进制整数的十六进制形式。要求按每4个二进制位对整数进行移位和去高位处理,得到的结果就是十六进制数的一位,然后按下面三种方式之一要求每种方式都用到 计算出一个十六进制数值对应的十六进制形式:
1)0-9之间的数值直接加上字符'0',9以上的数值减去10以后再加上字符'A'
2)定义一个数组,其中包含0-F这些字符,然后用要计算的数值作为数组的索引号,即可获得其对应的十六进制数据。
3)Character.forDigit静态方法可以将一个十六进制的数字转变成其对应的字符表示形式,例如,根据数值15返回字符'F'。
1)0-9之间的数值直接加上字符'0',9以上的数值减去10以后再加上字符'A'
2)定义一个数组,其中包含0-F这些字符,然后用要计算的数值作为数组的索引号,即可获得其对应的十六进制数据。
3)Character.forDigit静态方法可以将一个十六进制的数字转变成其对应的字符表示形式,例如,根据数值15返回字符'F'。
int number=8238824;
System.out.println(Integer.toHexString(number));
System.out.println("----------------");
String s1="";
String s2="";
String s3="";
for (int i=0;i<16;i++){
int digit=number & 0xf;
if (digit<10) s1=(char)('0'+digit)+s1;
else s1=(char)('A'+digit-10)+s1;
s2=hexNum[digit] + s2;
s3 = Character.forDigit(digit,16) + s3;
number = number>>4;
if (number==0)break;
}
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
System.out.println(Integer.toString(i,16)); // over了,不知道你们老师在想什么如果不是考试题,23倒是可以告诉你怎么做
import java.util.Stack;public class Int2Hex {
static char[] m={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',};
static Stack<Character> s;
public static void printHex1(int i){ // 2用栈完成
if(i<0){
System.out.print('-');
i=-i;
}
s=new Stack();
while(i!=0){
int n=i&0xf;
s.push(m[n]);
i>>=4;
}
while(!s.isEmpty()){
System.out.print(s.pop());
}
}
public static void printHex2(int i){ // 2用递归完成
if(i<0){
System.out.print('-');
i=-i;
}
if(i==0)
return;
int n=i&0xf;
i>>=4;
printHex2(i);
System.out.print(m[n]);
}
public static void printHex3(int i){ // 3用栈完成
if(i<0){
System.out.print('-');
i=-i;
}
s=new Stack();
while(i!=0){
int n=i&0xf;
s.push(Character.forDigit(n, 16));
i>>=4;
}
while(!s.isEmpty()){
System.out.print(s.pop());
}
}
public static void printHex4(int i){ // 3用递归完成
if(i<0){
System.out.print('-');
i=-i;
}
if(i==0)
return;
int n=i&0xf;
i>>=4;
printHex2(i);
System.out.print(Character.forDigit(n, 16));
}
public static void main(String[] args){
printHex1(-73802);
System.out.println();
printHex2(-1938);
System.out.println();
printHex3(-3332);
System.out.println();
printHex4(9304);
System.out.println();
}
}