【程序員教程】知識點總結1——機器數和碼制

以前大學學過,這麼久沒用到又忘記了,寫到博客備忘

機器數和碼制

  1. 各種數據在計算機中表示的形式稱爲機器數。機器數有無符號和帶符號之分。其特點是採用二進制計數制,數的符號用0、1表示,小數點隱含表示而不佔位置。

  2. 爲了便於運算,帶符號的機器數可以採用原碼、反碼和補碼等不同的編碼方法,這叫碼制

碼制的作用

       在計算機內,機器數有無符號和帶符號數之分

       無符號數表示正數,在機器數中沒有符號位。對於無符號數,若約定小數點的位置在機器數的最低位之後,則是純整數;若約定小數點的位置在機器數的最高位之前,則是純小數。

       對於帶符號數機器數的最高位是表示正(0)、負(1)的符號位,其餘位則表示數值。若約定小數點的位置在機器數的最低數值位之後,則是純整數;若約定小數點的位置在機器數的最高數值位之前(符號位之後),則是純小數。

原碼、反碼、補碼、移碼如何表示?

 舉例:45=00101101       -45=10101101 (以下所有例子都爲這兩個數的變換)

原碼:

原碼錶示法在數值前面增加了一位符號位(即最高位爲符號位):正數該位爲0,負數該位爲1(0有兩種表示:+0和-0),餘位表示數值的大小。

   舉例:[+45]原=00101101       [-45]原=10101101

反碼: 

反碼是數值存儲的一種,但是由於補碼更能有效表現數字在計算機中的形式,所以多數計算機一般都不採用反碼錶示數。

反碼錶示法規定:正數的反碼與其原碼相同;負數的反碼則是其絕對值按位取反[或者說除符號位不變,其他位按位取反]。

    舉例:[+45]反=00101101       [-45]反=11010010

補碼:

在計算機系統中,數值一律用補碼來表示和存儲。原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。此外,補碼與原碼相互轉換,其運算過程是相同的,不需要額外的硬件電路。

反碼錶示法規定:正數的補碼與其原碼相同負數一種簡單的方式,符號位保持1不變,數值位從右邊數第一個1及其右邊的0保持不變,左邊按位取反。也可以從反碼推補碼,就是在反碼的基礎上加1

   舉例:[+45]補=00101101       [-45]補=11010011

移碼:

移碼錶示法是在數X上增加一個偏移量來定義的,一般用於表示浮點數中的階碼。移碼(又叫增碼)是符號位取反的補碼,引入的目的是爲了保證浮點數的機器零爲全0。這個不分正負。

採用移碼錶示時,碼值大者其真值就大。

   舉例:[+45]移=10101101       [-45]移=01010011

 

【0的表示】

數值零的原碼錶示有兩種

[+0]原=0000 0000

[-0]原=1000 0000

數值零的反碼錶示有兩種

[+0]反=0000 0000

[-0]反=1111 1111

數值0的補碼有唯一編碼

[+0]補=0000 0000

[-0]補=0000 0000

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