public class BitMover {    public static byte swap(byte b){
        int lowBits = b & 0xF;          // 为什么这里取得是最低的4位?
        int highBits = b & 0xF0;        // 为什么这里取得是最高的4位? 
        
        int result = lowBits << 4 | highBits >>> 4;
        
        return (byte)result;
    }
    
    public static void main(String args[]){
        System.out.println(swap((byte)10));
        System.out.println(swap((byte)1));
        System.out.println(swap((byte)-1));
    }
}**************************************************
int lowBits = b & 0xF; 和 int highBits = b & 0xF0;
不太明白,请高手帮忙解答一下,谢谢^^

解决方案 »

  1.   

    0x0F也就是0000 0000 0000 1111
    0xF0也就是1111 0000 0000 0000任意的数与他们做位与操作..都只有对应的位子是"1"的时候才被保留
    所以分别是取低4位和高4位
      

  2.   

    噢...看错
    0xF0是0000 0000 1111 0000才对byte是8位         xxxx xxxx
    是这么对应的...取的是byte的高4位
      

  3.   

    0xF 和 0xF0 是16进制的表达方式,要这么说,假设 b= 10 
    0000 1100 
    &
    0000 1111

    0000 1100 并未预期的 1100 0000还是不明白,向高手求解呀!!
      

  4.   

    0000 1100  

    0000 1111 
    =  
    为什么要等于1100 0000 ?1&1=1
    1&0=0
    0&0=0
    怎么算都是0000 1100
      

  5.   

    - -!
    你怎么不举byte是127的例子?
      0111 1111   (& 0x0F)
    & 0000 1111
    -------------
      0000 1111这样不就只保留了低四位....