请用移位的方式打印出一个十进制整数的十六进制形式。提示:按每4个二进制位对整数进行移位和去高位处理,得到的结果就是十六进制数的一位...这个我很不明白内部是怎么运算的?
我的想法是比如一个10进制数15   int类型是32位 那就是0000 0000 0000 0000 0000 0000 0000 0000 1111   这样向右移动4位的话1111就被移出去了.只剩0了.怎么求出16进制啊?各位大虾帮帮忙.

解决方案 »

  1.   

    用循环来做,取出最低的四位,再把这四位右移去掉,一直这样循环.用Integer.toString(int i, int radix)这个方法可以实现,可以不用自己写程序来实现.
      

  2.   

    如果自己来做,这样做:
    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));
    }
    }
      

  3.   

    import java.util.Scanner;public class Test {
    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]);
    }
    }
    }