1. 程式人生 > >小猿圈作業系統之機器碼(原碼、反碼、補碼)

小猿圈作業系統之機器碼(原碼、反碼、補碼)

機器碼是最底層的語言,那計算機最底層是什麼?無疑最底層是由0和1組成,那什麼是原碼、什麼是反碼、什麼是補碼呢?他們之間有什麼關係呢,小猿圈老師帶你學習一下,認真聽,防止掛科哦,哈哈哈。

一、機器數:

一個數在計算機中的二進位制表示形式叫做這個數的機器數。機器數是帶符號的,在計算機用一個數的最高位存放符號, 正數為0, 負數為1。 比如,十進位制中的數 +3 ,計算機字長為8位,轉換成二進位制就是00000011。如果是 -3 ,就是 10000011 。 那麼,這裡的 00000011 和 10000011 就是機器數

二、真值:

因為第一位是符號位,所以機器數的形式值就不等於真正的數值。例如上面的有符號數 10000011,其最高位1代表負,其真正數值是 -3 而不是形式值131(10000011轉換成十進位制等於131)。所以,為區別起見,將帶符號位的機器數對應的真正數值稱為機器數的真值。

例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1

三、原碼:

原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值. 比如如果是8位二進位制: [+1]原 = 0000 0001 [-1]原 = 1000 0001

第一位是符號位. 因為第一位是符號位, 所以8位二進位制數的取值範圍就是: [1111 1111 , 0111 1111] 即 [-127 , 127]

原碼是人腦最容易理解和計算的表示方式.

四、反碼

反碼的表示方法是:正數的反碼是其本身;負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。

[+1] = [00000001]原 = [00000001]反

[-1] = [10000001]原 = [11111110]反

五、補碼

補碼的表示方法是:正數的補碼就是其本身;負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)

[+1] = [00000001]原 = [00000001]反 = [00000001]補

[-1] = [10000001]原 = [11111110]反 = [11111111]補

對於負數, 補碼錶示方式也是人腦無法直觀看出其數值的. 通常也需要轉換成原碼在計算其數值.

如果對老師課上講的原碼、補碼和反碼沒搞明白的同學,可以好好看看小編寫的這篇文章,對你會幫助很大,對這方面有欠缺的同學,可以去小猿圈學習一下,乾貨免費知識,希