在計算機内,有符号數有3種表示法:原碼、反碼和補碼,所有資料的運算都是采用補碼進行的。
原碼:二進制定點表示法,即最高位為符号位,‘0’表示正,‘1’表示負,其餘位表示數值的大小。
反碼:正數的反碼與其原碼相同,負數的反碼是對其原碼逐位取反,但符号位除外。
補碼:正數的補碼與其原碼相同,負數的補碼是在其反碼的末尾加1。
例如:
分别用原碼、反碼和補碼表示+7和-7
先計算得到7的二進制數為111
原碼:
符号位 | 數值位 | |
+7 | 0000111 | |
-7 | 1 | 0000111 |
反碼:
符号位 | 數值位 | |
+7 | 0000111 | |
-7 | 1 | 1111000 |
補碼:
補碼:
符号位 | 數值位 | |
+7 | 0000111 | |
-7 | 1 | 1111001 |
注:負數的補碼在加1後可能導緻符号位變化
如: 0 1111111在末尾加1 得到 1 0000000
練習:
- 已知某數的原碼為10110100B,試求該數的反碼和補碼。
符号位 | 數值位 | |
原碼 | 1 | 0110100 |
反碼 | 1 | 1001011 |
補碼 | 1 | 1001100 |
- 已知某數的補碼為11101110B,試求其原碼。
符号位 | 數值位 | |
補碼 | 1 | 1101110 |
反碼 | 1 | 1101101 |
原碼 | 1 | 0010010 |