1. 程式人生 > >原碼、補碼、反碼和移碼

原碼、補碼、反碼和移碼

color 保存 eight png logs 按位取反 編碼表 log 轉換成

  在計算機中所有的數據的保存均是用二進制來實現的,而二進制的表示則是一串的0,1組成。而在計算機的表達中有著機器數和原碼,反碼,補碼和移碼等數據的編碼表示方法。其中這些編碼的方法稱為碼制。

一、機器數

  各種數據在計算機中的表示的形式稱為機器數,其特點是數的符號用0、1來表示。機器數並不能算作真正的數值。

二、真值

  機器數對於的實際數值稱為該數的真值。也就是帶符號的機器數(機器數是不帶符號位的);機器數又分為無符號數和有符號數兩種。無符號數表示正數,在機器數中沒有符號位。對於帶符號數,機器數的最高位是表示正負兩種符號的,其中1表式負數,0表示正數。

   技術分享

三、原碼

  原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其余位表示值. 比如如果是8位二進制,如下:

   技術分享

四、反碼

  反碼有兩種情況:

  1. 當原碼為正數時,其反碼就等於正數的原碼(+原碼 = +反碼)
  2. 當原碼為負數時,其反碼就等於正數的原碼按位取反,但是最高位的符號位不變

  技術分享

  如果一個反碼表示的是負數, 要將其轉換成原碼再計算它真正的數值,否則是不知道它表示是什麽數值

五、補碼

  補碼也有兩種情況:

  1. 當原碼為正的時候,其補碼也等正數的原碼(+原碼 = +反碼 = +補碼)
  2. 當原碼為負數時,其補碼為負數反碼加1

   技術分享

六、移碼

  移碼(又叫增碼)是符號位取反的補碼,如下:

  技術分享

原碼、補碼、反碼和移碼