計(jì)算機(jī)組成原理之源碼、反碼、補(bǔ)碼詳解及Byte結(jié)構(gòu)
本文基礎(chǔ)知識(shí)大部分來(lái)自于大學(xué)學(xué)習(xí)的 計(jì)算機(jī)組成原理,計(jì)算機(jī)科學(xué)技術(shù)導(dǎo)論等教材
引論
編程語(yǔ)言中,多數(shù)都會(huì)由byte類(lèi)型,那byte類(lèi)型是一個(gè)什么樣的概念呢,占用字節(jié)數(shù)為1,為什么值范圍是-128~127呢,帶著這樣的疑問(wèn)我們進(jìn)入話題
十進(jìn)制數(shù) 97 和-97對(duì)應(yīng)的二進(jìn)制 1100001 和 -1100001
在數(shù)學(xué)中,是將正號(hào)“十”和負(fù)號(hào)“一”放在絕對(duì)值前面來(lái)表示該數(shù)是正數(shù)還是負(fù)數(shù)的。而在計(jì)算機(jī)中則使用符號(hào)位來(lái)表示正、負(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ū)分起見(jiàn),將原來(lái)用一般形式表示的數(shù)X稱(chēng)為機(jī)器數(shù)的真值,而將數(shù)在計(jì)算機(jī)內(nèi)的各種編碼表示稱(chēng)為機(jī)器數(shù),根據(jù)表示方法的不同分別記為[X]原、[X]反和[X]補(bǔ)等
在由日常數(shù)據(jù)轉(zhuǎn)換為計(jì)算機(jī)硬件能夠直接識(shí)別、處理的機(jī)器數(shù)時(shí),需要解決三個(gè)問(wèn)題
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ì)有問(wèn)題的,但負(fù)數(shù)相加就會(huì)出現(xiàn)一些問(wèn)題

為了克服原碼表示法在加、減運(yùn)算中的缺點(diǎn),引入了補(bǔ)碼表示法,并以此作為加、減運(yùn)算的基礎(chǔ)。引入補(bǔ)碼表示法的目的是:讓符號(hào)位也作為數(shù)值的一部分直接參與運(yùn)算,以簡(jiǎn)化加、減運(yùn)算的規(guī)則,同時(shí)又能化減為加。下面舉個(gè)例子說(shuō)明補(bǔ)碼的思想:
如 時(shí)鐘。時(shí)鐘以12為一個(gè)計(jì)數(shù)循環(huán),在有模運(yùn)算中稱(chēng)為“以12為模”。13點(diǎn)舍去模12后,就是1點(diǎn)。從0點(diǎn)位置出發(fā),沿反時(shí)針?lè)较驅(qū)r(shí)針撥動(dòng)-1格(即-1點(diǎn)),等同于沿順時(shí)針?lè)较驌軇?dòng)11格(即11點(diǎn))。換句話說(shuō),在以12為模的前提下,-1可以映射為+11。由此我們得到啟發(fā):在有模運(yùn)算中,一個(gè)負(fù)數(shù)可以用一個(gè)與它互為補(bǔ)碼的正數(shù)來(lái)代替。
補(bǔ)碼示例

注:數(shù)的原碼表示形式簡(jiǎn)單,適合于進(jìn)行乘除運(yùn)算,但用原碼表示的數(shù)進(jìn)行加減運(yùn)算比較復(fù)雜。引入補(bǔ)碼以后,減法運(yùn)算可以使用加法來(lái)實(shí)現(xiàn),且數(shù)的符號(hào)位也可以當(dāng)作運(yùn)算值一樣參加運(yùn)算,因此在計(jì)算機(jī)中大都采用補(bǔ)碼來(lái)進(jìn)行加減運(yùn)算。
二、Byte結(jié)構(gòu)
在絕大多數(shù)語(yǔ)言中 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)的原值 1 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)文章

計(jì)算機(jī)存儲(chǔ)單位如何換算? 計(jì)算機(jī)存儲(chǔ)單位全解析
計(jì)算機(jī)存儲(chǔ)單位有比特(bit)、字節(jié)(byte)、千字節(jié)(KB)、兆字節(jié)(MB)、吉字節(jié)(GB)、太字節(jié)(TB)、拍字節(jié)(PB)、艾字節(jié)(EB)等,今天我們幾句來(lái)看看換算方法2026-03-18
Bytes/KB/MB/GB/TB/PB/EB/ZB/YB分別代表什么? 一文看懂計(jì)算機(jī)存儲(chǔ)單位
今天我們來(lái)介紹計(jì)算機(jī)中存儲(chǔ)容量的基本單位及換算關(guān)系,從最基本的字節(jié)開(kāi)始,一直到TB級(jí)別,并解釋了理論值與實(shí)際應(yīng)用中的差異2026-03-18
電腦高手養(yǎng)成記! 2026年超詳細(xì)的BIOS進(jìn)入方法及設(shè)置匯總
想要深入了解和控制你的戴爾電腦嗎?那就從學(xué)習(xí)如何進(jìn)入BIOS界面開(kāi)始吧!通過(guò)BIOS,用戶可以設(shè)置系統(tǒng)時(shí)間、硬件配置以及啟動(dòng)設(shè)備等,下面我們就來(lái)看看進(jìn)入bios和設(shè)置方法2026-03-10
電腦卸載流氓軟件的5個(gè)隱藏技巧 實(shí)測(cè)有效
在日常使用電腦的過(guò)程中,很多朋友都遇到過(guò)這樣的問(wèn)題:明明想卸載一個(gè)軟件,卻發(fā)現(xiàn)怎么也卸載不掉,下面我們來(lái)總結(jié)幾種解決辦法2026-02-04
C盤(pán)文件怎么轉(zhuǎn)移到d盤(pán)? 將電腦C盤(pán)文檔轉(zhuǎn)移到D盤(pán)的多種技巧匯總
當(dāng)你的C盤(pán)空間不足時(shí),你需要采取一些措施來(lái)釋放空間,隨著電腦使用時(shí)間的增長(zhǎng),C盤(pán)可能會(huì)逐漸填滿,那么,C盤(pán)滿了怎么轉(zhuǎn)移到D盤(pán)里面去?對(duì)于不熟悉電腦操作的用戶來(lái)說(shuō),將數(shù)2026-01-14
C:\Windows\System32\drivers\etc文件夾沒(méi)有hosts文件的多種解決辦法
本文詳細(xì)記錄了一次尋找消失的hosts文件的經(jīng)歷,包括嘗試多種方法恢復(fù)hosts文件的過(guò)程,文內(nèi)介紹四種方法,都可以恢復(fù)hosts文件,詳細(xì)如下2025-12-09
5種常用符號(hào)怎么輸入? 電腦鍵盤(pán)符號(hào)輸入技巧
在編輯文字文檔時(shí),我們常常要輸入各種各樣的符號(hào),本文跟大家分享一下5種常用符號(hào)輸入技巧2025-11-06
電腦息屏?xí)r間在哪兒設(shè)置? 電腦息屏?xí)r間設(shè)置技巧
是不是經(jīng)常遇到朋友說(shuō)屏幕亮一整夜浪費(fèi)電,或者離開(kāi)電腦時(shí)擔(dān)心信息泄露?今天就教大家輕松設(shè)置電腦熄屏?xí)r間,省電、護(hù)屏、保隱私,快速搞定搞定2025-12-16
電腦運(yùn)行快捷指令怎么打開(kāi)? 打開(kāi)運(yùn)行命令框的方法匯總
在日常使用電腦時(shí),掌握運(yùn)行快捷指令的方法能極大提升效率,無(wú)論是安裝軟件、調(diào)試系統(tǒng)還是快速打開(kāi)程序,運(yùn)行窗口都是得力助手,下面介紹幾種常用打開(kāi)方式,總有一種適合你2025-11-05
電腦如何擴(kuò)容c盤(pán)分區(qū)? 2種擴(kuò)容C盤(pán)的分區(qū)方法
如果你前期給C盤(pán)分配的空間本身就很小,加上后來(lái)下載文件、安裝軟件等,很容易導(dǎo)致C盤(pán)空間緊張,這將會(huì)影響到系統(tǒng)運(yùn)行速度和用戶體驗(yàn),我們有必要擴(kuò)展C盤(pán),那么電腦如何重2025-11-03











