计算机中的补码和反码都是二进制吗,计算机中数值型数据二进制形式存储过程中的原码,反码与补码...
在計算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來表示和存儲。原因在于,使用補(bǔ)碼,可以將符號位和數(shù)值域統(tǒng)一處理;同時,加法和減法也可以統(tǒng)一處理。此外,補(bǔ)碼與原碼相互轉(zhuǎn)換,其運算過程是相同的,不需要額外的硬件電路。
舉個例子快速掌握吧
給一個數(shù)求補(bǔ)碼
1、正整數(shù)的補(bǔ)碼是其二進(jìn)制表示,與原碼相同
+9的補(bǔ)碼是00001001,二進(jìn)制表示也是00001001,原碼:00001001
2、求負(fù)整數(shù)的補(bǔ)碼,將其對應(yīng)的二進(jìn)制表示除了符號位的所有位取反后加1
求-5的補(bǔ)碼。-5是負(fù)數(shù),符號位是1,則對應(yīng)-5的二進(jìn)制表示也是原碼(10000101)符號位不變,其余位取反加1→(11111011)。所以-5的補(bǔ)碼是11111011。為,原碼(true form)是一種計算機(jī)中對數(shù)字的二進(jìn)制定點表示方法。原碼表示法在數(shù)值前面增加了一位符號位(即最高位為符號位):正數(shù)該位為0,負(fù)數(shù)該位為1(0有兩種表示:+0和-0),其余位表示數(shù)值的大小。則-5的原碼即是其二進(jìn)制表示。+11的原碼為00001011,-11的原碼就是10001011
補(bǔ)碼求原碼
已知一個數(shù)的補(bǔ)碼,求原碼的操作其實就是對該補(bǔ)碼再求補(bǔ)碼:
1如果補(bǔ)碼的符號位為“0”,其原碼就是補(bǔ)碼。
2如果補(bǔ)碼的符號位為“1”,符號位不變,其余位取反加1,那么求這個補(bǔ)碼的補(bǔ)碼就是要求的原碼。
e.g.已知一個補(bǔ)碼為11111001,則原碼是10000111(-7)。
因為符號位為“1”,表示是一個負(fù)數(shù),所以該位不變,仍為“1”。
其余七位1111001取反后為0000110;(注:反碼的概念就是符號位不變,其余位取反就是反碼)
再加1,所以是10000111。
已知補(bǔ)碼求表示的數(shù)值
e.g.-65的補(bǔ)碼是10111111
若直接將10111111轉(zhuǎn)換成十進(jìn)制,發(fā)現(xiàn)結(jié)果并不是-65,而是191。
事實上,在計算機(jī)內(nèi),如果是一個二進(jìn)制數(shù),其最左邊的位是1,則我們可以判定它為負(fù)數(shù),并且是用補(bǔ)碼表示。
若要得到一個負(fù)二進(jìn)制補(bǔ)碼的數(shù)值,只需求對應(yīng)的二進(jìn)制表示即可,即只需求原碼即可,只要對除符號位的其余位取反加1,就可算出其余位所表示的十進(jìn)制數(shù),將符號位變?yōu)樨?fù)號-,加在這個十進(jìn)制數(shù)前面即獲得此數(shù)。
如:二進(jìn)制值:10111111(-65的補(bǔ)碼)
除符號位其余位取反:11000000
加1:11000001(-65)
+0與-0
首先正數(shù)的反碼補(bǔ)碼與原碼相同
+0的原碼:00000000
+0的反碼:00000000
+0的補(bǔ)碼:00000000
-0的原碼:10000000
-0的反碼:11111111(后面分析-0無反碼)
-0的補(bǔ)碼:00000000(補(bǔ)碼規(guī)定0沒有正負(fù)之分)
-128的原碼:10000000
-128的反碼:11111111
-128的補(bǔ)碼:10000000
-0與-128有相同的反碼,為減少歧義,-0沒有反碼。
綜上所述:1.-128的補(bǔ)碼和原碼一樣都是1000 0000,
2.0的原碼、反碼和補(bǔ)碼都一樣(即0000 0000)
3.如果把-0當(dāng)做負(fù)數(shù),1000 0000就會有歧義(事實上0的補(bǔ)碼只有一個0000 0000)
補(bǔ)碼的范圍是[-2^(n-1),2^(n-1)-1]
總結(jié)
以上是生活随笔為你收集整理的计算机中的补码和反码都是二进制吗,计算机中数值型数据二进制形式存储过程中的原码,反码与补码...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 27计算机表演赛命题,27届计算机表演赛
- 下一篇: 服务器发送消息技术,知识科普:IM聊天应