一个byte由8个二进制位构成1个字节,即1Byte=8Bit
其中左边是高位,右边是低位。
high_four = (byte & 0xf0) >> 4; (0xf0=11110000)
low_four = byte & 0x0f; (0x0f=00001111)
0&1=0,1&1=1。所以byte&0x0f就是byte&00001111。不管byte的高四位是多少,&上0x0f的高四位(0000)之后,都是0。不管
byte的低四位是多少,&上0x0f的低四位(1111)之后,都会保存原值。
比如byte是11010111。byte的高四位是1101。&上0x0f的高四位0000之后,得到的值是0000。因为1&0=0,0&0也等于0。
byte的低四位是0111。&上0x0f的低四位1111之后,得到的值是0111。也就是原来的值。所以11010111&0x0f就是00000111。也就是把byte
的高四位变成0,低四位保持原值。所以取低四位的值就是byte&0x0f。
要取得byte的高四位。就是byte & 0xf0也就是11010111&11110000=11010000。然后再右移四位。变成1101。
(通过debug发现。如果右移的数据里面都是0的话,比如11010000右移四位数,就是右移了4个0。那么,左边就会补0变成了00001101。
如果11010111没有&11110000就直接右移4位的话,会变成1101.但是前面补位的变成了1。所以不是00001101而是11111101)
网友评论