一 數據儲存形式
二進制在內存中以補碼的形式存在。
補碼首位是符號位,0表示該數是正數,1表示該數是負數。
例如:
數值 |
帶符號的二進制原碼
(首位表示符號位)
|
補碼 |
內存中的形式
(
*表示無效位,其數量取決於分配的內存空間)
|
9 | 01001 | 01001 | 0***1001 |
-5 | 1***101 | 1***011 | 1***011 |
二 補碼是什么
正數: 補碼 = 反碼 = 原碼
負數: 原碼取反 = 反碼,反碼+1 = 補碼
⚠️
運算時: 符號位不變,有效位進行運算!帶*號的為無效位。
例如:
原碼 | 反碼 | 補碼 | |
9 | 01001 | 01001 | 0***1001 |
-5 | 1***101 | 1***010 | 1***011 |
三 計算機輸出數據的方式
轉換
內存中補碼 ———————> 原碼 (顯示)
四 按位取反運算符"~"的原理
按位取反: 將內存中的補碼按位取反,包括
符號位!!
例如:
按位取反~ 原碼顯示
9 ----> 補碼 0***1001 ---------------> 補碼 1***0110 --------------> 1***1010 (-10)
按位取反~ 原碼顯示
-5 ----> 補碼 1***011 ---------------> 補碼 0***100 --------------> 4 (補碼是正數,所以原碼也為4)