文章目錄
- 補碼(Two's complement)是什麼
- 對負數求二進制補碼的一般過程
- 為什麼使用補碼
- 拓展閱讀
補碼(Two’s complement)是什麼
大多數計算機使用補碼來表示負數。這種方法在執行數學運算(如加法和減法)時更有效。
位的最左邊叫最高有效位 (the most significant bit or MSB) : 用于訓示正數或負數,其餘位用于存儲數字的實際大小。正數總是以 0 開頭。
四位正數的補碼數為 0000 = 0、0001 = 1~ 0111 = 7。最小的正數是最小的二進制能表示的值。
負數總是以 1 開頭。最小的負數是最大的二進制值。1111 是 -1,1110 是 -2,1101 是 -3,直到 1000 代表 -8。
對負數求二進制補碼的一般過程
- 找到要表示的負數的正二進制值。
- 在數字前面加一個 0,表示它是正數。
- 取反
- 将此數字加 1。
使用二進制補碼求 -1
1 = 001
前面加0變成0001
取反 變成1110
加 1 = 1111 ( -8 + 4 + 2 + 1 = -1 )
或者:
2^8 - 1 = 10000 - 1 = 1111
使用二進制補碼求 -4
4 = 100
前面加0變成0100
“倒置”變成1011
加 1 = 1100 ( -8 + 4 = -4 )
或者:
2^4 - 4 = 10000 - 0100 = 1100
為什麼使用補碼
因為使用補碼,可以把減法改成加法。實際電路中,隻有加法器。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SN4gDO4kTNmhjYjljNkRDZyYzXwIjM0ETM4EzLcdDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)