请用移位的方式打印出一个十进制整数的十六进制形式。提示:按每4个二进制位对整数进行移位和去高位处理,得到的结果就是十六进制数的一位...这个我很不明白内部是怎么运算的?
我的想法是比如一个10进制数15 int类型是32位 那就是0000 0000 0000 0000 0000 0000 0000 0000 1111 这样向右移动4位的话1111就被移出去了.只剩0了.怎么求出16进制啊?各位大虾帮帮忙.
我的想法是比如一个10进制数15 int类型是32位 那就是0000 0000 0000 0000 0000 0000 0000 0000 1111 这样向右移动4位的话1111就被移出去了.只剩0了.怎么求出16进制啊?各位大虾帮帮忙.
public class Test{
public static String integerToHex(int x){
char[] hex={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
StringBuilder sb=new StringBuilder();
for(int i=0;i<8;i++){
sb.append(hex[x&0xf]);
x>>=4;
}
return sb.reverse().toString();
}
public static void main(String[] args){
System.out.println(integerToHex(255));
}
}
public static void main(String[] args){
Scanner c=new Scanner(System.in);
int i=c.nextInt();
int j=0;
char ch='0';
char[] result=new char[10];
while(i>16){
int digit=i&0xf;
i=i>>4;
if(digit<10)
ch=(char)('0'+digit);
else{
ch=(char)('A'+digit-10);
}
result[j++]=ch;
}
if(i<10)
ch=(char)('0'+i);
else{
ch=(char)('A'+i-10);
}
result[j]=ch;
for(;j>=0;j--){
System.out.print(result[j]);
}
}
}