數字在計算機中的表示


  現實生活中,我們通常使用10進制來表示我們的數字,而在計算機中使用的是“0”和“1”表示數字的二進制。

  如果我們用一個字節來存儲一個數字,那么這個數字在計算機中的存儲形式可能是這樣的:00010011。最左邊的0位在帶符號數字中用來表示正負號,0代表正號,1代表負號,所以它也就叫做符號位;其他位數用來表示具體數字,因此叫做數值位。

  00010011如果用來表示帶符號整數,那么它代表的數字是+19。+19叫做真值,00010011用於在計算機中表示,所以叫做機器數

  機器數在計算機中的表示形式有三種,原碼,反碼和補碼。

  原碼的表示:

    左邊是符號位,正數為0,負數為1。其他位表示數值

    【+10】原碼 = 00001010

    【-10】原碼 = 10001010 

    【+0】原碼 = 00000000

    【-0】原碼 = 10000000

  反碼的表示:

    正數的反碼和原碼相同,負數的反碼由原碼除了符號位的其余位取反(即0表1,1表0)

    【+10】反碼 = 00001010

    【-10】反碼 = 11110101

    【+0】反碼 = 00000000

    【-0】反碼 = 11111111

  補碼的表示:

    正數的補碼與原碼相同,負數的補碼由原碼的反碼加1得到

    【+10】補碼 = 00001010

    【-10】補碼 = 【-10】反碼 + 1 = 11110101 + 1 = 11110110 

    【+0】補碼 = 00000000

    【-0】補碼 = 【-0】反碼 + 1 = 11111111 + 1 = 【1】00000000(mod(256))

  補碼的意義:補碼實際上是一種模運算,以時鍾為例,時鍾一圈是12個小時,即時鍾的模為12。如果當前時刻是3點鍾,在12個小時之后時刻變為15點,15在模12之后,依然是3點。再如,將3點的時針調慢一個小時,即調成2點,和將時針向前調整11個小時的效果是一樣的。因此用3-1和(3+11)mod(12)的結果一樣。補碼在機器碼中的運用主要是用加法元算代替減法運算。CPU的加法器簡單效率高,因此不需要再專門實現減法器。

  在8位字中,我們的模就是2的8次方,即256。例如:

    直接減法:01000000(64)— 00001010(10) = 00110110(54)

    用補碼代替減法:01000000(64)+(11110110)(246)= 00110110(54) 

  兩種運算結果是一樣的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM