帶符號數的補碼
email:778138708@qq.com
- 正數的補碼與其原碼相同,最高位為符號位,其他各位為數值位。
- 負數的補碼為它的反碼加1。
[+0]補 = [+0]原 = 00000000
[-0]補 = [-0]反 + 1 = 11111111 + 1 = 00000000
帶符號數的補碼表示的數值范圍
1000 0001B為-127的補碼
1000 0000B為-128的補碼
帶符號數補碼的特點
- 0的補碼表示是唯一的,沒有+0和-0之分。
- 一個字節的有符號二進制數的補碼所能表示的范圍為:-128 ~ +127。
- 字的補碼表示范圍為:-32768 ~ +32767。
帶符號數補碼的位權
-128的補碼為1000 0000B
一個字節的帶符號數的補碼的位權
-27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
---|---|---|---|---|---|---|---|
-128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
例 通過補碼求真值,補碼10010101B = -27 + 24 + 22 + 20 = -107D
比較無符號數和有符號數的位權
- 無符號數的位權
27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
---|---|---|---|---|---|---|---|
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
有符號數補碼11101010的真值為:-27 + 26 + 25 + 23 + 21 = -22D
有符號數補碼01101010的真值為:26 + 25 + 23 + 21 = 106D
補碼轉換為真值
- 補碼轉為原碼,求真值:再次取補得到它的原碼,再轉換為真值。
例 已知[X]補 = 11101010,求X的真值。
解:
原碼為:10010101 + 1 = 10010110
真值為:-(24 + 22 + 21)= -22
- 利用補碼的位權,求真值。
補碼11101010的真值 = -27 + 26 + 25 + 23 + 21 = -22D