欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析計算機組成原理機器數(shù)概念與轉(zhuǎn)換

 更新時間:2023年04月07日 09:33:43   作者:Want595  
這篇文章主要介紹了淺析計算機組成原理概念與轉(zhuǎn)換,包括原碼、反碼、補碼、移碼的概念與轉(zhuǎn)換,需要的朋友可以參考下

一、原碼、反碼、補碼、移碼的概念

1. 真值 

二進制數(shù)和十進制數(shù)一樣有正負之分。書寫時可以用"+"和"-"來表示數(shù)據(jù)的符號,這種書寫格式稱為真值。

例如:十進制的+3和-5,二進制的+011和-101都是真值。   

2. 機器數(shù)

由于數(shù)據(jù)只有正、負兩種符號,因此在計算機中很自然就采用二進制的0和1來表示數(shù)據(jù)的符號,由符號和數(shù)值一起編碼表示的二進制數(shù)稱為機器數(shù)或機器碼。常用的機器數(shù)有原碼、反碼、補碼和移碼。 

例如:(這里的機器數(shù)都是原碼)1,0001第一位表示符號位,1表示負數(shù),逗號將符號位和數(shù)值位區(qū)分開,逗號后面的是數(shù)值位,0001是二進制,所以轉(zhuǎn)換為十進制后,真值就是 -1;

再比如   0,101表示的十進制數(shù)的真值是+5。 

1. 原碼

原碼就是符號化的數(shù)值,其編碼規(guī)則簡單直觀:正數(shù)符號位用0表示,負數(shù)符號位用1表示,數(shù)值位保持不變。

例如:

x=+0.1101,則[x]原=0.1101;x=+1101,則[x]原=01101

x= -0.1111,則[x]原=1.1111; x= -1111,則[x]原=11111 

原碼數(shù)據(jù)表示簡單直觀,只需將符號位加上二進制數(shù)的絕對值即可。但原碼存在兩個機器0,這會給數(shù)據(jù)運算帶來麻煩。另外原碼的加減法運算復(fù)雜,符號位不能直接參與運算。加法運算需要“同號求和,異號求差”,減法運算需要“一號求和,同好求差”,求差時還需要先比較大小,然后用大數(shù)減去小數(shù),最后結(jié)果的符號選擇也相對復(fù)雜。顯然,利用原碼作為機器數(shù)在實現(xiàn)加減法運算方面是不方便的,原碼在計算機中目前僅僅用于表示浮點數(shù)的尾碼。 

2. 反碼 

反碼又稱1的補碼,其符號位和原碼相同,真值為正數(shù)時,反碼和原碼相同;真值為負數(shù)時,反碼數(shù)值位為真值數(shù)值位取反。 

例如:

x=+0.1101,則[x]反=0.1101;x=+1101,則[x]反=01101 

x= -0.1111,則[x]反=1.0000;x= -1111,則[x]反=10000

反碼的符號位和原碼相同,當(dāng)真值為負數(shù)時,數(shù)值位需要逐位取反。同樣反碼也存在+0和-0兩個0.反碼的加減運算較原碼略簡單,其符號位可以直接參與運算,加法運算直接將反碼相加即可,但最高位進位要從運算結(jié)果最低位相加(循環(huán)進位)。減法運算只需要將被減數(shù)的反碼加上減數(shù)負數(shù)的反碼即可,同樣也要采用循環(huán)進位的運算方法。但盡管如此,現(xiàn)代計算機中并沒有采用反碼進行數(shù)據(jù)表示和運算,這是因為人們找到了更好的編碼——補碼。

3. 補碼

計算機中的二進制數(shù)據(jù)都有字長的限制,數(shù)據(jù)最高位進位的位權(quán)值就是模數(shù),運算結(jié)果超過模數(shù)的部分都會被自動舍棄,所以計算機二進制數(shù)據(jù)的運算屬于典型的有模運算,非常適合采用補碼進行表示和運算。 

例如:

x=+0.0101,則[x]補=0.0101;

x= -0.0101,則[x]補=1.1011;

x= -0.0000,則[x]補=0.0000;

x= -1.0000,則[x]補=1.0000;

補碼的表示相對原碼更加復(fù)雜,但其只有唯一的0,符號位可以直接參與運算,運算時符號位的進位作為模會自動舍棄,其獨特的表示方法使得減法運算可以轉(zhuǎn)換成加法運算,大大方便了二進制的運算。目前計算機中普遍采用補碼表示有符號整數(shù)。 

4. 移碼 

移碼只用于定點整數(shù)的表示,通常用于表示浮點數(shù)的階碼。其編碼方式是直接將真值x加一個常數(shù)偏移量。

例如:

x=+1010110,則[x]移=11010110;

x= -1010110,則[x]移=00101010; 

移碼具有以下特點:

① 移碼的符號位中0表示負數(shù),1表示正數(shù);

② 同一數(shù)值的移碼和補碼除符號位相反外,其他各位相同;

③ 移碼中0的表示也唯一,具體表示為100000……。 

二、原碼、反碼、補碼、移碼的轉(zhuǎn)換 

1. 原碼轉(zhuǎn)反碼

當(dāng)原碼的真值為正數(shù)時,反碼的機器數(shù)就等于原碼的機器數(shù)

當(dāng)原碼的真值為負數(shù)時,反碼的機器數(shù)等于原碼的機器數(shù)取反(符號位不變)

例如:

x=+0.1101,則[x]反=0.1101;x=+1101,則[x]反=01101 

x= -0.1111,則[x]反=1.0000;x= -1111,則[x]反=10000

2. 原碼轉(zhuǎn)補碼 

當(dāng)原碼的真值為正數(shù)時,補碼的機器數(shù)就等于原碼的機器數(shù)

當(dāng)原碼的真值為負數(shù)時,補碼的機器數(shù)等于原碼的機器數(shù)取反再加1(符號位不變) 

例如:

x=+0.0101,則[x]補=0.0101;

x= -0.0101,則[x]補=1.1011;

x= -0.0000,則[x]補=0.0000;

x= -1.0000,則[x]補=1.0000;

簡單來說,原碼的反碼加1就是補碼 

3. 原碼轉(zhuǎn)移碼 

當(dāng)原碼的真值為正數(shù)時,移碼的機器數(shù)等于原碼,但是符號位要改變

當(dāng)原碼的真值為負數(shù)時,移碼的機器數(shù)等于原碼機器數(shù)取反加1(符號位取反) 

例如:

x=+1010110,則[x]移=11010110;

x= -1010110,則[x]移=00101010; 

簡單來說,原碼的補碼數(shù)值位不變,符號位取反就是移碼

三、總結(jié) 

① 原碼、反碼、補碼、移碼都是機器數(shù)的表示方法,其實轉(zhuǎn)換為人類所理解的數(shù)(真值)都是一樣的,但是人類的習(xí)慣性思維對反碼、補碼、移碼理解比較困難,一般我們需要將它轉(zhuǎn)換為原碼再轉(zhuǎn)換成十進制理解。 

例如:1,00010(1表示符號位,00010表示數(shù)值位)是一個機器數(shù)的補碼,我們想知道它的真值,需要先將其轉(zhuǎn)換為原碼,它的原碼為1,11110,符號位為1,說明它是個負數(shù),數(shù)值位為11110,是二進制,轉(zhuǎn)換為十進制是30,所以該機器數(shù)的真值是-30。 

② 當(dāng)真值為正數(shù)時,反碼、補碼都等于原碼,移碼數(shù)值位等于原碼,符號位取反即可。 

③ 原碼、反碼機器數(shù)表示的零有正負之分;補碼、移碼機器數(shù)表示的零只有一個(即正零和負零相等)。 

到此這篇關(guān)于淺析計算機組成原理概念與轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)計算機組成原理概念內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論