一個byte由8個二進制位構(gòu)成1個字節(jié),即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發(fā)現(xiàn)。如果右移的數(shù)據(jù)里面都是0的話锉屈,比如11010000右移四位數(shù)荤傲,就是右移了4個0。那么部念,左邊就會補0變成了00001101弃酌。
如果11010111沒有&11110000就直接右移4位的話,會變成1101.但是前面補位的變成了1儡炼。所以不是00001101而是11111101)