“ 機器數” 根據我的理解 , 就是帶符號位的二進制代碼 。 8位二進制數 ,最高位表示的符號 ,其中 o
代表的是整數 ,1 代表的是負數 。如 : 1000 1111 和 0000 1111 他們雖然長得很像 ,但是其表示的意義
卻有很大的差別 ,前者表示的是整數+15 而後者表示的是 -15 。
“真值” 是機器數所能表示的值 。 它有三種表示方法 : 原碼 、 反碼 、 補碼 。
原碼的取值範圍是 -127 --- + 127 原碼的表示雖然簡單易懂 , 但是它的加法運算電路太複雜 ,不是很容易實現
反碼的取值範圍是 -127 -- +127
補碼的取值範圍是 -128 --- +127 對一個已知的補碼 再次求它的補碼 便能還原出真值。
那麼原碼 反碼 和補碼 我們要如何求得呢 ??
對於 上面的我們所說的 + 15 作爲例子 :
我們知道 對於1111 對應的十進制數 是 8 4 2 1 , 那麼 十進制+15 轉化爲二進制是 : 1111 他只有
四位,我們要求的是八位二進制數 , 所以 其餘位置補零 ! 最高位表示符號位,所以左邊的第一位 爲零 。
0其餘位置也是零 ,所以 +15 轉化爲二進制 是 : 0000 1111 。-15 與+15 唯一的區別是 符號位 爲1 , 是 1000 1111 。反碼就是對原碼 按位取反 ,符號位不變 , 但是這個有一個前提 就是針對負數而言。正數的
原碼 ,反碼 , 補碼 都是一樣 ,沒有任何的變化 。 那麼 -15的反碼 就是 1111 0000 補碼就是對原碼的
絕對值取反 然後加1 所以 -15 的補碼就是 1111 0001 !
總結一下上面說的:正數的原碼 反碼 補碼 是一樣的 , 最高位都表示的是符號位 。 0 爲正數 1 爲負數
負數的反碼是原碼絕對值 按位取反 , 補碼是反碼加 1 ,符號位不變 。
下面在說一下進位數值之間的轉換 :
二進制數---》八進制
從小數點開始,分別向左右按三位轉換成對應的八進制數字字符 。最後不足三位的 補零 。
二進制數 1101101 轉換爲 八進制數
二進制 001 101 101
八進制 1 5 5
所以二進制數轉換爲 八進制數 爲 (155)o
二進制轉換爲 十六進制 是每四位一組 與轉化爲八進制 基本相同 , 不再贅述 。
對於十進制 與二進制 八進制 十六進制之間的轉換 , 分別是 除 2 , 8 , 16 。
八進制 十六進制 轉換爲 二進制 ,是二進制 轉換爲十六進制 ,八進制 的逆運算。 每一位 分別用 三位和四位二進制表示 。