一、轉化方式
1、原碼
把數值轉成二進制,從右往左,位數不足補0。
首位是符号:0:正數 1:負數。
原碼不能運算
2、反碼
正數,反碼 = 原碼
負數:反碼 = 原碼 符号位不動,其他位數取反
3、補碼
正數:補碼 = 原碼
負數:負數 補碼 = 反碼 1
4、移碼
正數、負數:移碼 = 反碼 首符号位 取反。
5、示例:
數值6、-6的一個字節(8位),原碼、補碼、反碼、移碼
數值 6 -6
原碼:0000 0110 (不變) 1000 0110
反碼:0000 0110 (不變) 1111 1001 (符号位不動,其他位數取反)
補碼:0000 0110 (不變) 1111 1010 (反碼 1,符号位也進位,看下圖)
移碼:1000 0110 (反碼首符号位取反) 0111 1010 (反碼首符号位取反)
原碼、反碼、補碼、移碼
二、取值範圍
原碼: -(2^(n-1) - 1) 到 2^(n-1)-1 ; 8位: -127 到 127
反碼:-(2^(n-1) - 1) 到 2^(n-1)-1 ; 8位:-127 到 127
補碼:-2^(n-1) 到 2^(n-1)-1 ; 8位: -128 到 127 (因為補碼的 0和-0是一樣的)
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!