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;
不太明白,请高手帮忙解答一下,谢谢^^
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;
不太明白,请高手帮忙解答一下,谢谢^^
0xF0也就是1111 0000 0000 0000任意的数与他们做位与操作..都只有对应的位子是"1"的时候才被保留
所以分别是取低4位和高4位
0xF0是0000 0000 1111 0000才对byte是8位 xxxx xxxx
是这么对应的...取的是byte的高4位
0000 1100
&
0000 1111
=
0000 1100 并未预期的 1100 0000还是不明白,向高手求解呀!!
&
0000 1111
=
为什么要等于1100 0000 ?1&1=1
1&0=0
0&0=0
怎么算都是0000 1100
你怎么不举byte是127的例子?
0111 1111 (& 0x0F)
& 0000 1111
-------------
0000 1111这样不就只保留了低四位....