static void OutBitInt(String str,int i){   
        System.out.print(str+",int: "+i+" ,binary:");   
        System.out.print("     ");   
        for(int j=31;j>=0;j--) {  
            if(((1<<J)&I)!=0)   System.out.println(); System.out.print(?0?); else System.out.print(?1?); }
上面的方法怎么就能转二进制显示了呀?

解决方案 »

  1.   

    建议你回去再看几遍这几个运算符:<<,&
      

  2.   

    关键是这一步移位与操作
    if(((1<<J)&I)!=0)先移位,后与
      

  3.   

    好吧,java的int是32位的,1<<j就是把1左移j位,1就变为10000...(j个0)
    (1<<j)&i就能知道i第j位(从0开始数)是不是0
    如果i = 3, i的二进制表示就是00000000 00000000 00000000 00000011
    (1<<31)&i就是
     00000000 00000000 00000000 00000011
    &10000000 00000000 00000000 00000000
    结果是0,所以i的最左边就是0
    (1<<30)&i就是
     00000000 00000000 00000000 00000011
    &01000000 00000000 00000000 00000000
    结果还是0,输出0
    ...
    (1<<1)&i
     00000000 00000000 00000000 00000011
    &00000000 00000000 00000000 00000010
    结果是1(1<<0)&i
     00000000 00000000 00000000 00000011
    &00000000 00000000 00000000 00000001
    结果是1
    所以i的二进制输出是
    00000000 00000000 00000000 00000011
      

  4.   

    噢关键是1<<j 这个没理解    把1左移j位呀