共計 2247 個字符,預計需要花費 6 分鐘才能閱讀完成。
本文丸趣 TV 小編為大家詳細介紹“計算機組成原理機器數概念與轉換的方法是什么”,內容詳細,步驟清晰,細節處理妥當,希望這篇“計算機組成原理機器數概念與轉換的方法是什么”文章能幫助大家解決疑惑,下面跟著丸趣 TV 小編的思路慢慢深入,一起來學習新知識吧。
一、原碼、反碼、補碼、移碼的概念 1. 真值
二進制數和十進制數一樣有正負之分。書寫時可以用 + 和 – 來表示數據的符號,這種書寫格式稱為真值。
例如:十進制的 + 3 和 -5,二進制的 +011 和 -101 都是真值。
2. 機器數
由于數據只有正、負兩種符號,因此在計算機中很自然就采用二進制的 0 和 1 來表示數據的符號,由符號和數值一起編碼表示的二進制數稱為機器數或機器碼。常用的機器數有原碼、反碼、補碼和移碼。
例如:(這里的機器數都是原碼)1,0001 第一位表示符號位,1 表示負數,逗號將符號位和數值位區分開,逗號后面的是數值位,0001 是二進制,所以轉換為十進制后,真值就是 -1;
再比如 0,101 表示的十進制數的真值是 +5。
1. 原碼
原碼就是符號化的數值,其編碼規則簡單直觀:正數符號位用 0 表示,負數符號位用 1 表示,數值位保持不變。
例如:
x=+0.1101,則 [x] 原 =0.1101;x=+1101,則 [x] 原 =01101
x= -0.1111,則 [x] 原 =1.1111; x= -1111,則 [x] 原 =11111
原碼數據表示簡單直觀,只需將符號位加上二進制數的絕對值即可。但原碼存在兩個機器 0,這會給數據運算帶來麻煩。另外原碼的加減法運算復雜,符號位不能直接參與運算。加法運算需要“同號求和,異號求差”,減法運算需要“一號求和,同好求差”,求差時還需要先比較大小,然后用大數減去小數,最后結果的符號選擇也相對復雜。顯然,利用原碼作為機器數在實現加減法運算方面是不方便的,原碼在計算機中目前僅僅用于表示浮點數的尾碼。
2. 反碼
反碼又稱 1 的補碼,其符號位和原碼相同,真值為正數時,反碼和原碼相同;真值為負數時,反碼數值位為真值數值位取反。
例如:
x=+0.1101,則 [x] 反 =0.1101;x=+1101,則 [x] 反 =01101
x= -0.1111,則 [x] 反 =1.0000;x= -1111,則 [x] 反 =10000
反碼的符號位和原碼相同,當真值為負數時,數值位需要逐位取反。同樣反碼也存在 + 0 和 - 0 兩個 0. 反碼的加減運算較原碼略簡單,其符號位可以直接參與運算,加法運算直接將反碼相加即可,但最高位進位要從運算結果最低位相加(循環進位)。減法運算只需要將被減數的反碼加上減數負數的反碼即可,同樣也要采用循環進位的運算方法。但盡管如此,現代計算機中并沒有采用反碼進行數據表示和運算,這是因為人們找到了更好的編碼 mdash; mdash; 補碼。
3. 補碼
計算機中的二進制數據都有字長的限制,數據最高位進位的位權值就是模數,運算結果超過模數的部分都會被自動舍棄,所以計算機二進制數據的運算屬于典型的有模運算,非常適合采用補碼進行表示和運算。
例如:
x=+0.0101,則 [x] 補 =0.0101;
x= -0.0101,則 [x] 補 =1.1011;
x= -0.0000,則 [x] 補 =0.0000;
x= -1.0000,則 [x] 補 =1.0000;
補碼的表示相對原碼更加復雜,但其只有唯一的 0,符號位可以直接參與運算,運算時符號位的進位作為模會自動舍棄,其獨特的表示方法使得減法運算可以轉換成加法運算,大大方便了二進制的運算。目前計算機中普遍采用補碼表示有符號整數。
4. 移碼
移碼只用于定點整數的表示,通常用于表示浮點數的階碼。其編碼方式是直接將真值 x 加一個常數偏移量。
例如:
x=+1010110,則 [x] 移 =11010110;
x= -1010110,則 [x] 移 =00101010;
移碼具有以下特點:
① 移碼的符號位中 0 表示負數,1 表示正數;
② 同一數值的移碼和補碼除符號位相反外,其他各位相同;
③ 移碼中 0 的表示也唯一,具體表示為 100000 hellip; hellip;。
二、原碼、反碼、補碼、移碼的轉換 1. 原碼轉反碼
當原碼的真值為正數時,反碼的機器數就等于原碼的機器數
當原碼的真值為負數時,反碼的機器數等于原碼的機器數取反(符號位不變)
例如:
x=+0.1101,則 [x] 反 =0.1101;x=+1101,則 [x] 反 =01101
x= -0.1111,則 [x] 反 =1.0000;x= -1111,則 [x] 反 =10000
2. 原碼轉補碼
當原碼的真值為正數時,補碼的機器數就等于原碼的機器數
當原碼的真值為負數時,補碼的機器數等于原碼的機器數取反再加 1(符號位不變)
例如:
x=+0.0101,則 [x] 補 =0.0101;
x= -0.0101,則 [x] 補 =1.1011;
x= -0.0000,則 [x] 補 =0.0000;
x= -1.0000,則 [x] 補 =1.0000;
簡單來說,原碼的反碼加 1 就是補碼
3. 原碼轉移碼
當原碼的真值為正數時,移碼的機器數等于原碼,但是符號位要改變
當原碼的真值為負數時,移碼的機器數等于原碼機器數取反加 1(符號位取反)
例如:
x=+1010110,則 [x] 移 =11010110;
x= -1010110,則 [x] 移 =00101010;
簡單來說,原碼的補碼數值位不變,符號位取反就是移碼
讀到這里,這篇“計算機組成原理機器數概念與轉換的方法是什么”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注丸趣 TV 行業資訊頻道。