學習過計算機的哥們應該都知道,我們的計算機并不是以十進制、十六進制的方式進行數據的存儲的,哪它是以什么方式進行數據保存的呢?其實的數據存儲是以二進制的方式進行保存的。二進制里面只有“0”和“1”,沒有別的符號和其他的數值,二進制存在原碼、反碼、補碼的的轉換,那么這又是什么東西呢?好,現在就讓我們來了解他們吧!
在前面,我們學習了十進制、八進制、十六進制等用來代表實際數值的數,稱為真值,這些數我們再日常生活中都會使用到,那么在計算機中數值是怎么來表示的呢?
數在計算機中的表示形式統稱為機器數。計算機中處理數據及運算都是采用二進制,通常規定機器數用八位二進制表示。實用的數據有正數和負數,因為計算機只能表示0、1兩種狀態,數據的正號“+”或負號“-”,在計算機里就用一位二進制的0或1來區別,通常放在最高位,成為符號位。 符號位數值化之后,為能方便的對機器數進行算術運算、提高運算速度,計算機設計了多種符號位與數值一起編碼的方法,最常用的機器數表示方法有:原碼、反碼、補碼和移碼,下面就分別介紹一下它們的表示方法。
一、原碼、反碼、補碼
三種表示法的轉換過程如下:
說明:
特別的,在原碼中0有兩種表示方式:[+0]原=0000000,[-0]原=1000000。
在反碼表示中,0也有兩種表示形式:[+0]反=0000000,[-0]反=11111111。
在補碼表示中,0有唯一的編碼:[+0]補=0000000,[-0]補=0000000。
計算機之所以這些編碼方法是為了便于運算,提高運算速度。三種表示方法其實是層層遞進的,即會求十進制的二進制表示,記住符號位的正負表示,知道怎么遞進的它們之間的關系。
總結:
正數的原碼,補碼,反碼相同;
負數的反碼:符號位不變,原碼的數值取反;
負數的補碼:符號位不變,原碼轉換成反碼,反碼末位加1;