二进制补码
-----------siwuxie095
? ?
? ?
? ?
? ?
? ?
1、概述
? ?
? ?
? ?
? ?
? ?
? ?
2、補碼規則
? ?
? ?
如下:
? ?
(1)
? ?
? ?
? ?
(2)
? ?
? ?
? ?
? ?
四位二進制數對應的十進制數補碼和非補碼表:
? ?
二進制數 | 十進制數補碼 | 十進制值 |
0000 | 0 | 0 |
0001 | +1 | 1 |
0010 | +2 | 2 |
0011 | +3 | 3 |
0100 | +4 | 4 |
0101 | +5 | 5 |
0110 | +6 | 6 |
0111 | +7 | 7 |
1000 | -8 | 8 |
1001 | -7 | 9 |
1010 | -6 | 10 |
1011 | -5 | 11 |
1100 | -4 | 12 |
1101 | -3 | 13 |
1110 | -2 | 14 |
1111 | -1 | 15 |
? ?
? ?
? ?
? ?
? ?
3、為什么使用補碼
? ?
? ?
? ?
? ?
? ?
? ?
? ?
4、補碼運算的特征
? ?
? ?
? ?
? ?
? ?
? ?
? ?
? ?
? ?
5、補碼運算的原理
? ?
? ?
? ?
? ?
? ?
? ?
? ?
小擴展:
? ?
正數的原碼、反碼、補碼都相同
? ?
負數的反碼是在原碼的基礎上,最高位(符號位)不變,其他位取反
? ?
負數的補碼是在反碼的基礎上,再加 1
? ?
(也可以直接將此負數對應的正數原碼,所有位取反再加 1)
? ?
? ?
模 是指一個計量系統的計數范圍,如時鐘(計量范圍:0~11,模=12)。
計算機也可以看做一個計量機器,它也有一個計量范圍,即都存在一個 模。
? ?
模實質上是計量器產生溢出的量。它的值在計量器上表示不出來,計量器上
只能表示出模的余數(如時鐘的模=12表示不出來,不在0~11中)
? ?
任何有模的計量器,均可化減法為加法運算(如時鐘的順逆撥動,當時針
在10點,要撥到6點,可以順撥 8,「10+8=12+6=6」也可以逆撥 4,
「10-4=6」,即在12為模的系統中,減4和加8的效果一樣,凡是減4運算
都可以用加8代替,對模12而言,8和4互為補數)
? ?
在二進制中,正數和對應的負數相對于 模 2n來說,互為補數
〔即 模的二進制減去正數的二進制補碼即為負數的二進制補碼〕
? ?
? ?
? ?
另:負數補碼的其他求法
? ?
(1)負數補碼 = 2n- 對應正數的補碼
(2)將對應正數的二進制補碼進行比特反相運算,再將結果加1
(3)先寫出對應正數的二進制補碼:
- 先由最低比特開始找。
- 若該比特為0,將補碼對應比特填0,繼續找下一比特(較高的比特)。
- 若找到第一個為1的比特,將補碼對應比特填1。
- 將其余未轉換的比特進行比特反相,將結果填入對應的補碼。
? ?
? ?
? ?
? ?
特別的數字:
有二個數字的補碼等于本身:一個是0,另一個為該比特可表示最大絕對值負數(即1000...)
? ?
? ?
? ?
為什么補碼能這么巧妙實現了正負數的加減運算?
? ?
因為:指定n比特字長,那么就只有 2n個可能的值,加減法運算都存在
上溢出與下溢出的情況,實際上都等價于模 2n 的加減法運算
? ?
這對于n比特無符號整數類型或是n比特有符號整數類型都同樣適用
? ?
? ?
? ?
? ?
? ?
【made by siwuxie095】
轉載于:https://www.cnblogs.com/siwuxie095/p/6531962.html
總結
- 上一篇: 骨正基鞋垫真能治病吗
- 下一篇: 接口与抽象类的使用选择