16進制到byte

我們經常會看到這樣的語法

(byte) 0xAD

0xAD實際是個16進制,轉換成二進制爲:10101101,轉換成10進制是:173,它是個正數

10101101只是int的簡寫,int由4個byte字節,即32位bit組成,實際的值是

(00000000 00000000 00000000 )10101101

勞資醉了,寫了半天,保存的時候只保存了一部分,傻的51cto,再寫一次


int由4 byte組成,因此int轉byte是會掉位的,直接截取最後一個字節,即:

10101101

符號位是1,因此它是負數,負數的存儲方式是補碼。因此要先求出補碼才能計算值。

求補碼方式爲:

符號位不變,其他位取反,然後+1,映射到這裏則爲

11010010 + 1 -> 11010011

則值爲 -(2^6+2^4+2^1+2^0) = -83


因此0xAD = 173 ,(byte) 0xAD=-83


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章