簡單理解
真值: 現實世界中的數字
原碼:在真值的基礎上解決了正負號在機器中的表示問題
補碼:在原碼的基礎上解決了如何將減法變成加法的問題
移碼:在補碼的基礎上解決了數字的直觀大小比較問題
--------------------
真值:現實世界中的(一般來說的)數字,如+1000, -0.01。 我們把它分解成兩部分,分別是符號+-,以及絕對值部分1000 ,0.001
由於計算機中只能使用01二進位制,沒有表示符號位的元器件,所以為了解決+ - 號的問題引入原碼。換句話說,
原碼:一種機器數字,為了解決正負號在機器中的表示問題。
具體規則: +用0,-用1表示,且放在絕對值的前面。 於是+1000在機器中儲存為01000,-0.001儲存成1001 。另外,你可能會有疑問,1001也有可能是-001而不是-0.001。嗯,這是另一個問題,即計算機中沒有表示小數點的元器件,如何表示小數點的位置呢?為了解決這個問題,儲存整數和小數的時候會規定小數點的位置。另外,在紙面上,書上等非機器中的表述,會加上“.”(小數) 或者“,”(整數)來表述小數點的位置。 即 +1000會寫成 0,1000 ; -0.001會寫成 1.001 。注意這並不是機器中實際儲存的數字哦!
在解決了正負號的表示問題之後,由於計算機科學家門都比較“懶“,希望只使用加法來完成加減法的運算。於是針對如何解決將減法使用加法代替的問題的時候提出了補碼的概念,即:
補碼:一種機器數字,為了解決如何使用加法替代減法的問題。
具體規則: 在模確定的情況下,減去一個數=加上這個數的補數。例如在模是12的情況下,6-3 = 6+9 -12 。拿鐘錶來說,6點整逆時針減去3個小時,與順時針加上9個小時的位置是一樣的,這裡的模就是鐘錶的一圈:12。具體內容不方便碼字。
補碼很好的解決了上述問題,現在所有的減法都可以用加法來代替了。但是補碼有個重要缺點,即表示數的大小的時候不直觀,這點尤其在數的比較大小時不太方便。為了解決這個問題引入了移碼。即:
移碼: 一種機器數字,為了解決直觀的數字大小比較問題。
簡單來說就是將補碼全部移動一個數值,使之前有正有負的補碼全為正,方便比較數字的大小。
簡單理解
真值: 現實世界中的數字
原碼:在真值的基礎上解決了正負號在機器中的表示問題
補碼:在原碼的基礎上解決了如何將減法變成加法的問題
移碼:在補碼的基礎上解決了數字的直觀大小比較問題
--------------------
真值:現實世界中的(一般來說的)數字,如+1000, -0.01。 我們把它分解成兩部分,分別是符號+-,以及絕對值部分1000 ,0.001
由於計算機中只能使用01二進位制,沒有表示符號位的元器件,所以為了解決+ - 號的問題引入原碼。換句話說,
原碼:一種機器數字,為了解決正負號在機器中的表示問題。
具體規則: +用0,-用1表示,且放在絕對值的前面。 於是+1000在機器中儲存為01000,-0.001儲存成1001 。另外,你可能會有疑問,1001也有可能是-001而不是-0.001。嗯,這是另一個問題,即計算機中沒有表示小數點的元器件,如何表示小數點的位置呢?為了解決這個問題,儲存整數和小數的時候會規定小數點的位置。另外,在紙面上,書上等非機器中的表述,會加上“.”(小數) 或者“,”(整數)來表述小數點的位置。 即 +1000會寫成 0,1000 ; -0.001會寫成 1.001 。注意這並不是機器中實際儲存的數字哦!
在解決了正負號的表示問題之後,由於計算機科學家門都比較“懶“,希望只使用加法來完成加減法的運算。於是針對如何解決將減法使用加法代替的問題的時候提出了補碼的概念,即:
補碼:一種機器數字,為了解決如何使用加法替代減法的問題。
具體規則: 在模確定的情況下,減去一個數=加上這個數的補數。例如在模是12的情況下,6-3 = 6+9 -12 。拿鐘錶來說,6點整逆時針減去3個小時,與順時針加上9個小時的位置是一樣的,這裡的模就是鐘錶的一圈:12。具體內容不方便碼字。
補碼很好的解決了上述問題,現在所有的減法都可以用加法來代替了。但是補碼有個重要缺點,即表示數的大小的時候不直觀,這點尤其在數的比較大小時不太方便。為了解決這個問題引入了移碼。即:
移碼: 一種機器數字,為了解決直觀的數字大小比較問題。
簡單來說就是將補碼全部移動一個數值,使之前有正有負的補碼全為正,方便比較數字的大小。