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

計(jì)算機(jī)組成原理之源碼、反碼、補(bǔ)碼詳解及Byte結(jié)構(gòu)

  發(fā)布時(shí)間:2023-06-05 11:35:09   作者: 港城大白鯊   我要評(píng)論
這篇文章主要介紹了計(jì)算機(jī)組成原理之源碼、反碼、補(bǔ)碼詳解及Byte結(jié)構(gòu),需要的朋友可以參考下

本文基礎(chǔ)知識(shí)大部分來自于大學(xué)學(xué)習(xí)的 計(jì)算機(jī)組成原理,計(jì)算機(jī)科學(xué)技術(shù)導(dǎo)論等教材

引論

編程語言中,多數(shù)都會(huì)由byte類型,那byte類型是一個(gè)什么樣的概念呢,占用字節(jié)數(shù)為1,為什么值范圍是-128~127呢,帶著這樣的疑問我們進(jìn)入話題

十進(jìn)制數(shù)  97 和-97對(duì)應(yīng)的二進(jìn)制 1100001 和 -1100001

在數(shù)學(xué)中,是將正號(hào)“十”和負(fù)號(hào)“一”放在絕對(duì)值前面來表示該數(shù)是正數(shù)還是負(fù)數(shù)的。而在計(jì)算機(jī)中則使用符號(hào)位來表示正、負(fù)數(shù)。符號(hào)位規(guī)定放在數(shù)的最前面,并用“0”表示正數(shù),用“1”表示負(fù)數(shù)。這樣,數(shù)的符號(hào)也數(shù)碼化了。在計(jì)算機(jī)中,負(fù)數(shù)有三種表示方法:原碼、反碼和補(bǔ)碼。任何正數(shù)的原碼、補(bǔ)碼和反碼的形式完全相同,而負(fù)數(shù)則有各種不同的表示形式。為區(qū)分起見,將原來用一般形式表示的數(shù)X稱為機(jī)器數(shù)的真值,而將數(shù)在計(jì)算機(jī)內(nèi)的各種編碼表示稱為機(jī)器數(shù),根據(jù)表示方法的不同分別記為[X]原、[X]反和[X]補(bǔ)等

在由日常數(shù)據(jù)轉(zhuǎn)換為計(jì)算機(jī)硬件能夠直接識(shí)別、處理的機(jī)器數(shù)時(shí),需要解決三個(gè)問題

1. 只能采用二進(jìn)制數(shù),每位數(shù)碼非0即1;

2. 將符號(hào)位數(shù)字化,如用0表示正號(hào),用1表示負(fù)號(hào);

3. 采用什么編碼方法表示數(shù)值。

一、原碼、補(bǔ)碼、反碼

原碼

原碼表示法約定:讓數(shù)碼序列的最高位為符號(hào)位,符號(hào)位為0表示該數(shù)為正,為1表示該數(shù)為負(fù);數(shù)碼序列的其余部分為有效數(shù)值,用二進(jìn)制數(shù)絕對(duì)值表示。

97對(duì)應(yīng)的 原碼:0 1100001   -97對(duì)應(yīng)的原碼:1 1100001 

反碼

正數(shù)的反碼是其本身(等于原碼);負(fù)數(shù)的反碼是將原碼中除符號(hào)位以外的所有位(數(shù)值位)取反,也就是 0 變成 1,1 變成 0

97 的 原碼和反碼都是:0 1100001   

-97 的原碼:1 1100001 

-97 的反碼:1 0011110

補(bǔ)碼

假設(shè) 我們用原碼進(jìn)行加減法操作,示例 十進(jìn)制 -2  對(duì)應(yīng)二進(jìn)制 1 0000010,十進(jìn)制 3  對(duì)應(yīng)二進(jìn)制 0 0000011,正數(shù)之間是不會(huì)有問題的,但負(fù)數(shù)相加就會(huì)出現(xiàn)一些問題

 為了克服原碼表示法在加、減運(yùn)算中的缺點(diǎn),引入了補(bǔ)碼表示法,并以此作為加、減運(yùn)算的基礎(chǔ)。引入補(bǔ)碼表示法的目的是:讓符號(hào)位也作為數(shù)值的一部分直接參與運(yùn)算,以簡(jiǎn)化加、減運(yùn)算的規(guī)則,同時(shí)又能化減為加。下面舉個(gè)例子說明補(bǔ)碼的思想:

如 時(shí)鐘。時(shí)鐘以12為一個(gè)計(jì)數(shù)循環(huán),在有模運(yùn)算中稱為“以12為模”。13點(diǎn)舍去模12后,就是1點(diǎn)。從0點(diǎn)位置出發(fā),沿反時(shí)針方向?qū)r(shí)針撥動(dòng)-1格(即-1點(diǎn)),等同于沿順時(shí)針方向撥動(dòng)11格(即11點(diǎn))。換句話說,在以12為模的前提下,-1可以映射為+11。由此我們得到啟發(fā):在有模運(yùn)算中,一個(gè)負(fù)數(shù)可以用一個(gè)與它互為補(bǔ)碼的正數(shù)來代替。

補(bǔ)碼示例

注:數(shù)的原碼表示形式簡(jiǎn)單,適合于進(jìn)行乘除運(yùn)算,但用原碼表示的數(shù)進(jìn)行加減運(yùn)算比較復(fù)雜。引入補(bǔ)碼以后,減法運(yùn)算可以使用加法來實(shí)現(xiàn),且數(shù)的符號(hào)位也可以當(dāng)作運(yùn)算值一樣參加運(yùn)算,因此在計(jì)算機(jī)中大都采用補(bǔ)碼來進(jìn)行加減運(yùn)算。

 二、Byte結(jié)構(gòu)

在絕大多數(shù)語言中 Byte結(jié)構(gòu)都是 1字節(jié) 范圍 [-128,127]

這個(gè)參考上文講的 機(jī)器數(shù) 是計(jì)算機(jī)里存儲(chǔ)的,計(jì)算機(jī)可以識(shí)別的數(shù),所以 Byte 1字節(jié)是8位,可以表示的范圍是 0000 0000 ~ 1111 1111,注意此處存儲(chǔ)的是 原數(shù)值的補(bǔ)碼

正數(shù)部分:正數(shù)的補(bǔ)碼還是自己,即 0000 0000 ~ 0111 1111 表示范圍是 [0,127] , 

負(fù)數(shù)部分:負(fù)數(shù)的補(bǔ)碼 是該數(shù)的原碼除負(fù)號(hào)位外各位取反,然后在最后一位加1,

即 1111 1111 ~ 1000 0000 對(duì)應(yīng)的原值 0000 0000 ~ 1000 0001  即為 [-128,-1]

注意:其實(shí)有的時(shí)候很難理解 把 1000 0000 轉(zhuǎn)換為 -128,這個(gè)原因是 高位被截?cái)啵鋵?shí)他的原碼應(yīng)該是 1 0000 0000 然后取補(bǔ)碼得到 1000 0000

 以下為Java代碼示例

到此這篇關(guān)于計(jì)算機(jī)組成原理之源碼、反碼、補(bǔ)碼詳解及Byte結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)源碼、反碼、補(bǔ)碼詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論