機器數的表示形式

最近在學習 微機原理 , 被弄得是焦頭爛額 。這個東西講起來太抽象,不好理解 老師講的也聽的是一塌糊塗 , 最近花了點時間  ,算是把 機器數的數值運算弄出了點頭緒 。 在這裏記錄一下吧 !

   “ 機器數” 根據我的理解 , 就是帶符號位的二進制代碼 。  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  。

  八進制  十六進制  轉換爲 二進制  ,是二進制 轉換爲十六進制 ,八進制 的逆運算。 每一位 分別用 三位和四位二進制表示 。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章