首先區分兩個概念:真值與機器碼
為了解決在計算機內部數的正、負符號和小數點運算問題,而產生了把符號位和數值位一起編碼來表示相應的數的表示方法,如原碼,反碼,補碼,移碼
1.原碼
正數:0+二進位制數
負數:1+二進位制數
2.反碼正數:0+二進位制數
負數:1+二進位制數按位取反
3.補碼正數:0+二進位制數
負數:1+(二進位制數按位取反,末位+1)
在定點整數機器中,數的表示範圍為|x
|<(2
n−1)
| x|
<(2
n−1)
,但n位二進位制補碼數的表示範圍是−2
n−1 −2n
−1
到2n−1−1
2 n−
1−1,
其中用[
1000
0000]原
[
1000
0000]原
來表示−2
n−1 −2n
−1
,這樣不僅僅修復了0的符號以及存在兩個編碼的問題, 而且還能夠多表示乙個最低數. 這就是為什麼8位二進位制, 使用原碼或反碼表示的範圍為[-127, +127], 而使用補碼表示的範圍為[-128, 127].
但是,同時要注意,用補碼表示的−2
n−1 −2n
−1
是沒有對應的反碼和原碼的,因為實際上是使用以前的-0的補碼來表示-128
4.移碼
正數:1+二進位制數
負數:0+(二進位制數按位取反,末位+1)
表示方法
正數負數
+1011111
-1011111
原碼0+二進位制數
1+二進位制數
01011111
11011111
反碼0+二進位制數
1+二進位制數按位取反
01011111
10100000
補碼0+二進位制數
1+(二進位制數按位取反,末位+1)
01011111
10100001
移碼1+二進位制數
0+(二進位制數按位取反,末位+1)
11011111
00100001
數的機器碼表示(原碼,反碼,補碼,移碼)
1.機器數和真值 二進位制數有正負之分,如n1 0.101101,n2 0.101101,則n1是個正數,n2是個負數。機器不能直接把符號 表示出來,為了能在計算機中表示正負數,必須引入符號位,即把正負符號也用1位二進位制數碼來表示。把符號位和數值位一起編碼來表示相應的數的表示方法包括 原碼 補碼 ...
機器碼的表示 原碼 反碼 補碼 移碼
今天做筆試題時遇到的乙個小問題 在機器碼的表示方法中,有哪些方法對0的表示方式是唯一的?毫不猶豫的選擇了補碼。後來發現我錯了,居然還有移碼這個東東。到目前為止,我們學習了十進位制 二進位制 八進位制 十六進製制等用來代表實際數值的數,稱為真值,這些數我們再日常生活中都會使用到,那麼在計算機中數值是怎...
機器碼的原碼,反碼,補碼,移碼介紹
數的機器碼表示有原碼,反碼,補碼,移碼。三者的關係如下 原碼 原碼就是數值二進位制本身,第一位表示符號位,正數符號位為0,負數的符號位為1,例 當x 100 10 x 的原碼為 x 原 01100100,當x 100 10 時,x 的原碼為 x 原 11100100,反碼 正數的反碼 原碼,負數的反...