挑戰408 組成原理(3) 原碼,補碼,反碼

2021-08-29 04:46:16 字數 2572 閱讀 2439

計算機中的資料分為數值資料和非數值型資料(如聲音,影象等等)。我們接下來主要談的是數值型資料。

在現實的生活中,數值資料主要分為實數和整數兩大類,在計算機中,整數用定點數表示,實數用浮點數表示,而所有帶符號的整形都用補碼表示。目前通用計算機中浮點數大多數採用ieee754標準,其中尾數採用定點原碼表示,所以浮點數的算術運算涉及原碼的加減乘除運算。

無符號數,即沒有正負號的數,是數的絕對值,在其面前添上正負號,便成了有符號的數。計算機的數均存放在暫存器中,通常我們稱暫存器的位數為機器字長,當存放有符號數的時候,需要占用以為存放符合位,所有,如若機器字長為16位,那麼:

15次方是因為符號位占用了一位。

那麼計算機如何表示有符號數呢?我們規定,用0表示正號,用1表示負號,這樣符號也就被數位化了,並規定放在有效資料之前,例如:

+0.1011 在機器中表示為0(小數點位置)1011

-1100 在機器中表示為1,1100(小數點位置)

為了方便區分手寫的數和將符號數位化的數,我們把前者稱為真值,後者稱為機器數。即

-1100(真值) -> 11100(機器數)

將符號數位化以後帶來了新的問題,運算時,符號位是否參與運算,如果是,那麼如何處理?為了處理好這些問題,於是就引入了原碼,補碼,反碼和移碼等編碼方式。

原碼原碼,又稱帶符號的絕對值表示,符號位為0表示正,為1表示負。用大白話來講,就是直接將數值部分寫成二進位制數然後前面添上0或者1,用來表示正負號。

其實上面的公式我們只需要了解即可,實際的轉換很簡單

比如x = +1110時 [x]原 = 0,1110

x = -1110時 [x]原 = 1,1110 (逗號只是為了區分符號位實際不存在)

x = 0.1101時 [x]原 = 0.1101

x = -0.1101時 [x]原 = 1,1110(注意不是10.1101,因為0並不是有效資料位)。

注意

若字長為n+1,那麼原碼整數的表示範圍為:

原碼中0的表示方式有兩種:

如果說是這幾種碼制中最重要的編碼方式,一點也不為過。計算機中存放的數值方式大多數是用補碼存放,計算(尤其是減法做加法運算時)時也通常採用補碼運算方式,因此要對補碼非常敏感。

對於純整數:

對於純小數:

而對於0而言,

具體的例項不舉先,先看看我們的反碼,我們沒有必要按上面的數學公式往上套。

反碼反碼,通常用來由原碼求補碼或者由補碼求原碼的過渡環節。

我們先看看數學定義:

對於純小數:

對於純整數:

所以,記住上面的就夠了,我們具體看看運算過程,取反操作就是將原碼中的0換成1,1換成0.就完事了。

當x = +1101時,x反 = 0,1101

當x = -1101時,x反 = 1,0010(當為負數的時候,符號位不變,數值位執行取反操作)

當x = +0.0110時,x反 = 0.0110

當x = -0.0110時,x反 = 1.1001

對於0來說,反碼的表示方式也有兩種(0,000或者1,111),這就自己去寫了。

前面的數學公式是應付表示範圍類的題目,那麼這些內容就是應付計算題的題目:

下面舉個簡單的計算例子:

移碼當真值用補碼表示的時候,由於符號位與數值位一起編碼,這與習慣上表示不同,我們很難從補碼形式上直接判斷真值的大小。但是如果對每個真值位(注意不包含符號位),都加上乙個2^n(n為整數字),那麼在數軸上,移碼表示的範圍恰好對應真值在數軸上移動2的n次方個單元。所以叫做移碼。

它常常用來表示浮點數的階數,因為它只能表示整數。

對於移碼來說,0的表示是唯一的,假設字長為6位(含乙個符號位)那麼0的表示為:

+0移 = (2^5) + 0 =1,00000

-0移 = (2^5) - 0 =1,00000

特點

0 的表示方式唯一

對於同乙個真值,移碼和補碼相差乙個符號位,且相反,例如:-11110 補碼為1,00010,移碼為:000010

引入移碼是為了直觀的判斷真值大小,所以移碼大,真值就大

挑戰408 組成原理(17) 指令格式

好久沒更新了,放元旦本來打算跨個年,可惜外面太冷。還是我在家裡寫寫文章吧。由開始的時候我們知道,計算機能解題,是由於機器本身存在一種語言,它既能理解人的意圖,又能被機器本身識別。機器語言,是由一條條語句構成的,每一條語句又能準確的表達某種語義 比如某種運算元,參與操作的數,或者其他的資訊在何處 而計...

挑戰408 組成原理(16) 儲存器刷題(1)

半導體隨機儲存器 sram dram 主存擴容 並行儲存器 cache及其替換演算法 補充知識點 sram和dram在與cpu的連線上有什麼不同?答 在實際中,dram晶元採用的是位址復用技術,至於什麼是位址復用技術,自行查閱資料。做題只需要知道一點,那就是其位址線變為原來所需要的一半。片選的時候用...

挑戰408 組成原理(24) 硬佈線控制器

控制單元 cu 是提供完成計算機指令全部操作的微操作指令序列部件.用下圖來描述其外部特性 輸入訊號 時鐘。上述的所有操作都具有下面的兩點特點 因此,為了讓cu按一定的順序,一定節拍發出各種控制訊號,cu必須受到時鐘的控制。也就是說,每乙個時鐘脈衝傳送乙個或者一組的操作命令 指令暫存器 ir 現行指令...