暫存器中的每一位均可用來存放數值
n位的服務號數表示範圍:0 ~ 2n-1 (即全0到全1)
假如機器字長16位,無符號數的表示範圍是:0 —— 65535,即就是 16個0 —— 16個1( 216 - 1 = 65536 - 1 = 65535 )
對於有符號的整數,小數點隱含在數值位的最後面;
對於有符號的小數,小數點隱含在符號位的後面;
以下有符號數相關推導公式統一用 n+1 位表示機器字長,數值位佔 n 位用機器字長第一位表示符號位,剩下的表示數值位,假設機器字長為8位(下同),可以表示為:
+8:[x]原 = 0000 1000
-8:[x]原 =1000 1000
紅色識別符號號位,「0」表示正,「1」表示負,下同
整數可表示的範圍:[-(2n-1), 2n-1]
+0.75:[x]原 = 0110 0000
-0.75:[x]原 = 1110 0000
小數可表示的範圍:[-(1-2-n), 1-2-n] (關於原點對稱)
+0:[x]原 = 0000 0000
-0:[x]原 = 1000 0000
其中 0 的真值有 +0 和 -0 兩種表示狀態
反碼是原碼轉變為補碼的乙個中間狀態
正數的反碼與原碼相同,負數的反碼是符號位不變,數值位取反
如:+8:[x]反 = 0000 1000
-8:[x]反 = 1111 0111
整數可表示的範圍:[-(2n-1),2n-1]
+0.75:[x]反 = 0110 0000
-0.75:[x]反 = 1001 1111
小數可表示的範圍:[-(1-2-n), 1-2-n] (關於原點對稱)
+0:[x]反 = 0000 0000
-0:[x]反 = 1111 1111
其中 0 的真值也有 +0 和 -0 兩種表示狀態
正數的補碼=原碼
負數的補碼=反碼+1
如:+8:[x]補 = 0000 1000
-8:[x]補 = 1111 1000
整數可表示的範圍:[-2n, 2n-1](比原碼多表示乙個-2n)
+0.75:[x]補 = 0110 0000
-0.75:[x]補 = 1010 0000
小數可表示的範圍:[-1, 1-2-n] (比原碼多表示乙個 -1)
對於0:
+0:[x]補 = 0000 0000
-0:[x]補 = (1)
0000 0000(產生進製1,直接丟棄)
補碼的真值 0 只會有一種表示狀態,因此用 (1)
000 0000這種狀態表示-27
規定最小的負數的補碼永遠是首位1,後面全0
助記:-7:[x]原 = 1000 0111
-7:[x]反 = 1111 1000
-7:[x]補 = 1111 1001
-7減1:[x]補 = 1111 1000,對應的原碼為: 1000 1000,即 -8
* 負數的補碼形式轉為原碼:
[x]原 = 2n-1 - [x]補
此外,補碼具有迴圈特性,-1 的補碼永遠是個1,比如8位機器字長表示 -1 的補碼是 1111 1111,加1就是(1)
0000 0000(產生進製1,直接丟棄),結果對應的真值是0;8位機器字長最大的正數的補碼是 0111 1111,加1之後,就是 1111 1111,又變回了 -1
在補碼的基礎上將符號位取反
⚠️注意:只能用於表示整數
作用:可以很方便的對比機器數大小,與真值大小對應
+8:[x]移 = 1000 1000
-8:[x]移 = 0111 1000
整數可表示的範圍:[-2n, 2n-1](與補碼相同)
+0:[x]移 = 1000 0000
-0:[x]移 = 1000 0000
移碼的真值 0 也只會有一種表示狀態
計算機中的資料表示 原碼 補碼 反碼 移碼
我們都知道,在計算機中,資訊以二進位制的形式儲存和運算。而每種資料表示方法都有它的優劣,因此有其不同的適用場合。本文將介紹計算機中幾種不同的資料表示及其相互間轉換 真值 真值,顧名思義,就是我們人腦能夠理解和日常中適用的數字 只不過這裡,我們理解成二進位制數。原碼原碼是幾種編碼之中比較容易理解的 符...
原碼 反碼 補碼,計算機中負數的表示
原碼 將乙個整數,轉換成二進位制,就是其原碼。如單位元組的5的原碼為 0000 0101 5的原碼為1000 0101。反碼 正數的反碼就是其原碼 負數的反碼是將原碼中,除符號位以外,每一位取反。如單位元組的5的反碼為 0000 0101 5的反碼為1111 1010。補碼 正數的補碼就是其原碼 負...
原碼 反碼 補碼,計算機中負數的表示
原碼 將乙個整數,轉換成二進位制,就是其原碼。如單位元組的5的原碼為 0000 0101 5的原碼為1000 0101。反碼 正數的反碼就是其原碼 負數的反碼是將原碼中,除符號位以外,每一位取反 如單位元組的5的反碼為 0000 0101 5的反碼為1111 1010。補碼 正數的補碼就是其原碼 負...