(tmp 8) 0xff;
以下是閱讀他人文章后,個人對計算 (tmp >> 8) & 0xff; 的理解:
將tmp轉為二進制數
6322040->11000000111011101111000,向右移16位(清掉該16位),且左邊用0補足16位
00000000000000001100000,將移動后的二進制轉10進,等于96
tmp作為byte類型,計算機存儲的補碼是01100000(8位)
int類型是32位,將tmp作為int傳遞賦值時需要不為,所以補位后的補碼
111111111111111111111111 01100000
?
當byte要轉化為int的時候,高的24位必然會補1,這樣,其二進制補碼其實已經不一致了,&0xff可以將高的24位置為0,低8位保持原樣。這樣做的目的就是為了保證二進制數據的一致性。
即使用了&0xff后的補碼為 000000000000000000000000 01100000 值等于01100000 等于96
?
同理:(tmp >> 8) & 0xff;
6322040->11000000111011101111000->00000000110000001110111(十進轉二進,向右移走8位,向向補0 八位)
?
Byte轉int 8位轉32位,使用0xff將高的24位設為0,低8位保持不變
01110111->11111111111111111111111101110111->000000000000000000000000 01110111=119
?
?
tmp & 0xff;( 十進轉二進,不移動,使用0xff將高的24位設為0,低8位保持不變)
6322040->11000000111011101111000->00000000000000000000000001111000=120
?
?文章源自:https://www.cnblogs.com/think-in-java/p/5527389.html
?
轉載于:https://www.cnblogs.com/yanwz/p/9089910.html
總結
以上是生活随笔為你收集整理的(tmp 8) 0xff;的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NoPause/NoEmgAbort的任
- 下一篇: VC的文件路径为什么要用双斜杠