當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 原碼、反碼、補(bǔ)碼之間怎么快速轉(zhuǎn)換,大神帶你輕松學(xué)
學(xué)習(xí)過(guò)計(jì)算機(jī)的哥們應(yīng)該都知道,我們的計(jì)算機(jī)并不是以十進(jìn)制、十六進(jìn)制的方式進(jìn)行數(shù)據(jù)的存儲(chǔ)的,哪它是以什么方式進(jìn)行數(shù)據(jù)保存的呢?其實(shí)的數(shù)據(jù)存儲(chǔ)是以二進(jìn)制的方式進(jìn)行保存的。二進(jìn)制里面只有“0”和“1”,沒(méi)有別的符號(hào)和其他的數(shù)值,二進(jìn)制存在原碼、反碼、補(bǔ)碼的的轉(zhuǎn)換,那么這又是什么東西呢?好,現(xiàn)在就讓我們來(lái)了解他們吧!
在前面,我們學(xué)習(xí)了十進(jìn)制、八進(jìn)制、十六進(jìn)制等用來(lái)代表實(shí)際數(shù)值的數(shù),稱為真值,這些數(shù)我們?cè)偃粘I钪卸紩?huì)使用到,那么在計(jì)算機(jī)中數(shù)值是怎么來(lái)表示的呢?
數(shù)在計(jì)算機(jī)中的表示形式統(tǒng)稱為機(jī)器數(shù)。計(jì)算機(jī)中處理數(shù)據(jù)及運(yùn)算都是采用二進(jìn)制,通常規(guī)定機(jī)器數(shù)用八位二進(jìn)制表示。實(shí)用的數(shù)據(jù)有正數(shù)和負(fù)數(shù),因?yàn)橛?jì)算機(jī)只能表示0、1兩種狀態(tài),數(shù)據(jù)的正號(hào)“+”或負(fù)號(hào)“-”,在計(jì)算機(jī)里就用一位二進(jìn)制的0或1來(lái)區(qū)別,通常放在最高位,成為符號(hào)位。 符號(hào)位數(shù)值化之后,為能方便的對(duì)機(jī)器數(shù)進(jìn)行算術(shù)運(yùn)算、提高運(yùn)算速度,計(jì)算機(jī)設(shè)計(jì)了多種符號(hào)位與數(shù)值一起編碼的方法,最常用的機(jī)器數(shù)表示方法有:原碼、反碼、補(bǔ)碼和移碼,下面就分別介紹一下它們的表示方法。
一、原碼、反碼、補(bǔ)碼
三種表示法的轉(zhuǎn)換過(guò)程如下:
說(shuō)明:
特別的,在原碼中0有兩種表示方式:[+0]原=0000000,[-0]原=1000000。
在反碼表示中,0也有兩種表示形式:[+0]反=0000000,[-0]反=11111111。
在補(bǔ)碼表示中,0有唯一的編碼:[+0]補(bǔ)=0000000,[-0]補(bǔ)=0000000。
計(jì)算機(jī)之所以這些編碼方法是為了便于運(yùn)算,提高運(yùn)算速度。三種表示方法其實(shí)是層層遞進(jìn)的,即會(huì)求十進(jìn)制的二進(jìn)制表示,記住符號(hào)位的正負(fù)表示,知道怎么遞進(jìn)的它們之間的關(guān)系。
總結(jié):
正數(shù)的原碼,補(bǔ)碼,反碼相同;
負(fù)數(shù)的反碼:符號(hào)位不變,原碼的數(shù)值取反;
負(fù)數(shù)的補(bǔ)碼:符號(hào)位不變,原碼轉(zhuǎn)換成反碼,反碼末位加1;