原碼、反碼和補(bǔ)碼的概念(非原創(chuàng))轉(zhuǎn)載
原碼、反碼和補(bǔ)碼的概念
本節(jié)要求
掌握原碼、反碼、補(bǔ)碼的概念
知識精講
數(shù)值型數(shù)據(jù)的表示按小數(shù)點(diǎn)的處理可分為定點(diǎn)數(shù)和浮點(diǎn)數(shù);按符號位有原碼、反碼和補(bǔ)碼三種形式的機(jī)器數(shù)。
一.計算機(jī)中數(shù)據(jù)的表示方法
1、數(shù)的定點(diǎn)與浮點(diǎn)表示
在計算機(jī)內(nèi)部,通常用兩種方法
原碼、反碼和補(bǔ)碼的概念
本節(jié)要求
掌握原碼、反碼、補(bǔ)碼的概念
知識精講
數(shù)值型數(shù)據(jù)的表示按小數(shù)點(diǎn)的處理可分為定點(diǎn)數(shù)和浮點(diǎn)數(shù);按符號位有原碼、反碼和補(bǔ)碼三種形式的機(jī)器數(shù)。
一.計算機(jī)中數(shù)據(jù)的表示方法
1、數(shù)的定點(diǎn)與浮點(diǎn)表示
在計算機(jī)內(nèi)部,通常用兩種方法來表示帶小數(shù)點(diǎn)的數(shù),即所謂的定點(diǎn)數(shù)和浮點(diǎn)數(shù)。
? ??①定點(diǎn)數(shù):是小數(shù)點(diǎn)在數(shù)中的位置是固定不變的數(shù),數(shù)的最高位為符號位,小數(shù)點(diǎn)可在符號位之后,也可在數(shù)的末尾,小數(shù)點(diǎn)本身不需要表示出來,它是隱含的。
??? 缺點(diǎn):只有純小數(shù)或整數(shù)才能用定點(diǎn)數(shù)表示;
??? ②浮點(diǎn)數(shù):小數(shù)點(diǎn)在數(shù)中的位置是浮動的、不固定的數(shù)。
一般浮點(diǎn)數(shù)既有整數(shù)部分又有小數(shù)部分,通常對于任何一個二進(jìn)行制數(shù)N,總可以表示成:
????????????? N=±2P×S
??? N、P、S均為二進(jìn)制數(shù),
P為N的階碼,一般為定點(diǎn)整數(shù),常用補(bǔ)碼表示,階碼指明小數(shù)點(diǎn)在數(shù)據(jù)中的位置,它決定浮點(diǎn)的表示范圍
?
S為N的尾數(shù),一般為定點(diǎn)小數(shù),常用補(bǔ)碼或原碼表示,尾數(shù)部分給出了浮點(diǎn)數(shù)的有效數(shù)字位數(shù),它決定 了浮點(diǎn)數(shù)的精度,且規(guī)格化浮點(diǎn)數(shù)0.5≤|S|<1;
0.1B=( 1/2 )D????????????? =( 2-1 )D
0.11B=(1/2 + 1/4 )D???????? =( 2-1 + 2-2 )D
0.111B=(1/2 + 1/4? + 1/8 )D? =( 2-1 + 2-2 + 2-3)D?????? ---------------------------
在計算機(jī)中表示一個浮點(diǎn)數(shù)其結(jié)構(gòu)為:
????????????????????????? 階碼部分?? ?????? ???????? 尾數(shù)部分
階符
階數(shù)
尾符
尾數(shù)
Ef
E1E2…Em
Sf
S1S2…Sn
假設(shè)用八個二進(jìn)制位來表示一個浮點(diǎn)數(shù),且階碼部分占4位,其中階符占一位;尾數(shù)部分占4位,尾符也占一位。
若現(xiàn)有一個二進(jìn)制數(shù)N=(101100)2可表示為:2110×0.1011,則該數(shù)在機(jī)器內(nèi)的表示形式為:
101100B=? 10110B * (21)D
101100B=?? 1011B * (22)D
101100B=? 101.1B * (23)D
101100B=? 10.11B * (24)D
101100B=? 1.011B * (25)D
101100B= 0.1011B * (26)D=0.1011B *? (2110)B
0
1
1
0
0
1
1
0
1
一個浮點(diǎn)形式的尾數(shù)S若滿足0.5≤|S|<1,且尾數(shù)的最高位數(shù)為1,無無效的0,則該浮點(diǎn)數(shù)稱為規(guī)格化數(shù);規(guī)格化數(shù)可以提高運(yùn)算的精度。
??????????? S為原碼表示,則 S1=1
規(guī)格化數(shù)
??? ???????S為補(bǔ)碼表示??? N為正數(shù),則S1 =1
?????????? ????????????????N為負(fù)數(shù),則S1=0
??? 二、原碼、反碼和補(bǔ)碼
1、機(jī)器數(shù)與真值
機(jī)器數(shù):在計算機(jī)中數(shù)據(jù)和符號全部數(shù)字化,最高位為符號位,且用0表示正、1表示負(fù),那么把包括符號在內(nèi)的一個二進(jìn)制數(shù)我們稱為機(jī)器數(shù),機(jī)器數(shù): 有原碼、反碼和補(bǔ)碼三種表示方法。
比如,十進(jìn)制中的數(shù)?+3?,計算機(jī)字長為8位,轉(zhuǎn)換成二進(jìn)制就是00000011。如果是?-3?,就是?10000011?。?
那么,這里的?00000011?和?10000011?就是機(jī)器數(shù)。
真值:用“+”、“—”號表示的二進(jìn)制數(shù)。
機(jī)器數(shù)因為第一位是符號位,所以機(jī)器數(shù)的形式值就不等于真正的數(shù)值。例如上面的有符號數(shù)?10000011,其最高位1代表負(fù),其真正數(shù)值是?-3?而不是形式值131(10000011轉(zhuǎn)換成十進(jìn)制等于131)。所以,為區(qū)別起見,將帶符號位的機(jī)器數(shù)對應(yīng)的真正數(shù)值稱為機(jī)器數(shù)的真值。?
例:0000?0001的真值?=?? +000?0001?=?+1,
??? 1000?0001的真值?=?? -000?0001?=?-1
?
?? ?2、原碼、反碼和補(bǔ)碼的概念
1)概念
機(jī)器數(shù): 有原碼、反碼和補(bǔ)碼三種表示方法。
?
原碼:是最簡單的機(jī)器數(shù)表示法。其數(shù)符位用0表示正,1表示負(fù),其余各位表示真值本身。
????? 即用第一位表示符號,?其余位表示值,比如如果是8位二進(jìn)制:
????? 1的原碼是00000001,
??? —1的原碼是10000001。
?
反碼:正數(shù)的反碼同原碼,??? 負(fù)數(shù)的反碼為除符號位外,其它各位按位取反。
????? 正數(shù)的反碼是其本身,? 負(fù)數(shù)的反碼是在其原碼的基礎(chǔ)上,符號位不變,其余各個位取反
????? 1的反碼是00000001,
??????? —1的反碼是11111110。
?
補(bǔ)碼:正數(shù)的補(bǔ)碼同原碼,負(fù)數(shù)的補(bǔ)碼為反碼加1。
??????????????????????? 負(fù)數(shù)的補(bǔ)碼是在其原碼的基礎(chǔ)上,?符號位不變,?其余各位取反,?最后+1
????? 1的補(bǔ)碼是00000001,
??? —1的補(bǔ)碼是11111110。
2)轉(zhuǎn)換方法
當(dāng)真值為正數(shù)時,原碼、反碼、補(bǔ)碼 3種機(jī)器數(shù)的最高位均為0
當(dāng)真值為負(fù)數(shù)時,原碼、反碼、補(bǔ)碼 3種機(jī)器數(shù)的最高位均為1
?
機(jī)器數(shù)的最高位為符號位,其它位稱為數(shù)值位。
?
當(dāng)真值為正數(shù)時,原碼=反碼=補(bǔ)碼;
當(dāng)真值為負(fù)數(shù)時,三種機(jī)器數(shù)的符號位相同,均為1,原碼的數(shù)值位保持“原”樣,反碼的數(shù)值位是原碼數(shù)值位的“按位取反”,補(bǔ)碼的數(shù)值位是原碼的數(shù)值位的“按位取反”后再加1,簡稱“取反加1”。
當(dāng)真值為負(fù)數(shù)時:補(bǔ)碼 = 反碼+1
當(dāng)真值為負(fù)數(shù)時:原碼 = [補(bǔ)碼]取補(bǔ)??? 補(bǔ)碼 = [原碼]取補(bǔ)
??????????????? [-x]補(bǔ)=模 - [x]補(bǔ)
??????????????? [x]補(bǔ)=模 - [-x]補(bǔ)???? 比如8bit,模= 28=1_0000_0000
?
?
例如:(1)假設(shè)碼長為8位,寫出下列數(shù)的原碼、反碼和補(bǔ)碼。
根據(jù)本題可得到結(jié)論:0的原碼、反碼各有兩種表示方法,而補(bǔ)碼是唯一的全0表示。
真值
+0
-0
+1
-1
+127
-127
-128
原碼
00000000
10000000
00000001
10000001
01111111
11111111
溢出
反碼
00000000
11111111
00000001
11111110
01111111
10000000
溢出
補(bǔ)碼
00000000
00000000
00000001
11111111
01111111
10000001
10000000
???? (2)假設(shè)碼長為8位,寫出原碼、反碼和補(bǔ)碼所能表示定點(diǎn)整數(shù)和定點(diǎn)小數(shù)的范圍。
?
二進(jìn)制定點(diǎn)整數(shù)
十進(jìn)制定點(diǎn)整數(shù)
n位可表示的個數(shù)
二進(jìn)制定點(diǎn)小數(shù)
十進(jìn)制定點(diǎn)小數(shù)
原碼
11111111~01111111
-127~+127
2n-1個
1.1111111~0.1111111
-127/128~+127/128
反碼
10000000~01111111
-127~+127
2n-1個
1.1111111~0.1111111
-127/128~+127/128
補(bǔ)碼
10000000~01111111
-128~+127
(-128)代替了(-0)
2n個
1.1111111~0.1111111
-1~-127/128
由此可見:n位的二進(jìn)制數(shù)用原碼表示,則可表示的數(shù)的個數(shù)為2n-1個;n位的二進(jìn)制數(shù)用反碼表示,則可表示的數(shù)的個數(shù)為2n-1個;n位的二進(jìn)制數(shù)用補(bǔ)碼表示,則可表示的數(shù)的個數(shù)為2n個。
比如:補(bǔ)碼中用(-128)代替了(-0)
編程中常用到的32位int類型,可以表示范圍是:?[-231 ~ 231 -1]?因為第一位表示的是符號位.而使用補(bǔ)碼表示時又可以多保存一個最小值??????????????? -2G ~ 2G -1
3、算術(shù)運(yùn)算
計算機(jī)中的算術(shù)運(yùn)算一般可采用補(bǔ)碼進(jìn)行,用補(bǔ)碼表示的兩個操作數(shù)進(jìn)行算術(shù)運(yùn)算,符號位可直接參加運(yùn)算,結(jié)果仍為補(bǔ)碼。
①定點(diǎn)補(bǔ)碼加法運(yùn)算
運(yùn)算規(guī)則:[x+y]補(bǔ)=[x]取補(bǔ)+[y]補(bǔ)
②定點(diǎn)補(bǔ)碼減法運(yùn)算
運(yùn)算規(guī)則:[x-y]補(bǔ)=[x+(-y)]補(bǔ)=[x]補(bǔ)+[-y]補(bǔ)
[-y]補(bǔ)的求法是將[y]補(bǔ)的各位(包括符號位)全取反,最末位加1。
即將[y]補(bǔ)連同符號位一起取反加1便可得到[-y]補(bǔ)。
[-x]補(bǔ)=模 - [x]補(bǔ)
??? [x]補(bǔ)=模 - [-x]補(bǔ) 比如8bit,模= 28
如:
[y]補(bǔ)=10001010,則[-y]補(bǔ)=01110110;??? [-1]補(bǔ)=28 - [1]補(bǔ)=1_0000_0000 - 0000_0001 = 1111_1111
[y]補(bǔ)=0100,則[-y]補(bǔ)=1100;??????? [-(-1)]補(bǔ)=28 - [-1]補(bǔ)=1_0000_0000 - 1111_1111 = 0000_0001
注意:在進(jìn)行運(yùn)算時有時會發(fā)生溢出。
? ?③定點(diǎn)補(bǔ)碼運(yùn)算的溢出處理
采用補(bǔ)碼運(yùn)算時若結(jié)果的數(shù)值超出了補(bǔ)碼所能表示的范圍,則此種情況稱為溢出。
若計算結(jié)果比能表示的最大數(shù)還大則稱為上溢,上溢時一般作溢出中斷處理;
若計算結(jié)果比能表示的最小數(shù)還小則稱為下溢,下溢時一般作機(jī)器零處理。
下面介紹用雙符號判斷溢出方法:
引入兩個符號位Cs+1、Cs
Cs+1用來表示兩個符號位向更高位進(jìn)位時的狀態(tài),有進(jìn)位時Cs+1=1,無進(jìn)位時Cs+1=0;
Cs用來表示兩數(shù)值的最高位向符號位進(jìn)位時的狀態(tài),有進(jìn)位時Cs=1,無進(jìn)位時Cs=0;
當(dāng)Cs+1Cs=00或11時,無溢出;當(dāng)Cs+1Cs=01或10時,有溢出,當(dāng)雙符號位為01時正溢出,當(dāng)雙符號位為10時負(fù)溢出;
例如:[x]補(bǔ)=10011100,[y] 補(bǔ)=10011000,則[x+y]補(bǔ)=???????? 。溢出,因為Cs+1Cs=10。故溢出邏輯表達(dá)式為V=Cs+1⊕Cs
④無符號數(shù)的運(yùn)算
無符號數(shù)的運(yùn)算實際上是指參加運(yùn)算的操作數(shù)X、Y均為正數(shù),且整個字長全部用于表示數(shù)值部分。
當(dāng)兩個無符號數(shù)相加時,其值在字長表示的范圍內(nèi),其結(jié)果為正數(shù)。
當(dāng)兩個無符號數(shù)相減時,其值的符號位取決于兩數(shù)絕對值的大小。
另外,地址在計算機(jī)中用無符號數(shù)表示。
?
四原碼,?反碼,?補(bǔ)碼再深入?
計算機(jī)巧妙地把符號位參與運(yùn)算,?并且將減法變成了加法,?背后蘊(yùn)含了怎樣的數(shù)學(xué)原理呢?
將鐘表想象成是一個1位的12進(jìn)制數(shù).?如果當(dāng)前時間是6點(diǎn),?我希望將時間設(shè)置成4點(diǎn),?
我們可以:?
1.?往回?fù)?個小時:?6?-?2?=?4?
2.?往前撥10個小時:?(6?+?10)?mod?12?=?4?
3.?往前撥10+12=22個小時:?(6+22)?mod?12?=4?
?
2,3方法中的mod是指取模操作,?16?mod?12?=4?即用16除以12后的余數(shù)是4.?所以鐘表往回?fù)?減法)的結(jié)果可以用往前撥(加法)替代!?
現(xiàn)在的焦點(diǎn)就落在了如何用一個正數(shù),?來替代一個負(fù)數(shù).?上面的例子我們能感覺出來一些端倪,?發(fā)現(xiàn)一些規(guī)律.?但是數(shù)學(xué)是嚴(yán)謹(jǐn)?shù)??不能靠感覺.?首先介紹一個數(shù)學(xué)中相關(guān)的概念:?同余
?
?
“?!笔侵敢粋€計量系統(tǒng)的計數(shù)范圍
例如:時鐘的計量范圍是0~11,模=12。
表示n位的計算機(jī)計量范圍是0~2n -1,模=2n
“?!睂嵸|(zhì)上是計量器產(chǎn)生“溢出”的量,它的值在計量器上表示不出來,計量器上只能表示出模的余數(shù)。任何有模的計量器,均可化減法為加法運(yùn)算。
比如:時鐘(模=12)中,加8和減4效果是一樣的,因此凡是減4運(yùn)算,都可以用加8來代替
?
對時鐘(模=12)而言,8和4互為補(bǔ)數(shù)。
以12模的系統(tǒng)中,11和1;10和2;9和3;7和5;6和6都互為補(bǔ)數(shù)。共同的特點(diǎn)是兩者相加等于模
對于計算機(jī),其概念和方法完全一樣。
n位計算機(jī),設(shè)n=8, 所能表示的最大數(shù)是11111111,若再加1稱為100000000(9位)
但因只有8位,最高位1自然丟失。又回了00000000,所以8位二進(jìn)制系統(tǒng)的模為28。
在這樣的系統(tǒng)中減法問題也可以化成加法問題,只需把減數(shù)用相應(yīng)的補(bǔ)數(shù)表示就可以了。
?????? [-x]補(bǔ)=模 - [x]補(bǔ)
??? [x]補(bǔ)=模 - [-x]補(bǔ) 比如8bit,模= 28
??? [-1]補(bǔ)=28 - [1]補(bǔ)=1_0000_0000 - 0000_0001 = 1111_1111
?[-(-1)]補(bǔ)=28 - [-1]補(bǔ)=1_0000_0000 - 1111_1111 = 0000_0001
?
把補(bǔ)數(shù)用到計算機(jī)對數(shù)的處理上,就是補(bǔ)碼。
?
負(fù)數(shù)取模
x?mod?y?=?x?-?y*int(?x?/?y?)
??????????????? int(?x?/?y?) VB語法表示:不大于(x/y)的最大整數(shù),即向下取整
??????????????? int(-1.5)=-2
??????????????? Fix(-1.5)=-1
舉例:?-3?mod?2?=?-3?-?2*int(-3/2)?=?-3?-?2*(-2)?=?-3?-?2x(-2)=1
?
同余的概念
兩個整數(shù)a,b,若它們除以整數(shù)m所得的余數(shù)相等,則稱a,b對于模m同余
記作?a?≡?b?(mod?m)?讀作?a?與?b?對于模?m?同余
舉例說明:?4?mod?12?=?4?; 16?mod?12?=?4?; 28?mod?12?=?4?
所以4,?16,?28對于模?12?同余.
兩個定理:
1、反身性:?
a?≡?a?(mod?m)? 自己和自己 對于模m同余
?
2、線性運(yùn)算定理:
如果a ≡ b (mod m),c ≡ d (mod m)
那么:
(1)a?±?c?≡?b?±?d?(mod?m)
(2) a?*?c?≡?b?*?d?(mod?m)?
3、傳遞性:
若a≡b (mod m),b≡c (mod m),則a≡c (mod m)
?
典型例題
一、選擇題
1、一個四位二進(jìn)制補(bǔ)碼的表示范圍是(???? )
A、0~15??? B、-8~7???? C、-7~7???? D、-7~8
2、(10題)十進(jìn)制數(shù)-48用補(bǔ)碼表示為(???? )
?? A、10110000??? B、11010000?????? C、11110000??? ??D、11001111
分析:求某個負(fù)數(shù)的補(bǔ)碼,可利用模的定義,所以求-48的補(bǔ)碼,只需求-80的原碼即可,因為-48+(-80)=-128,而[-80]原=11010000,故選B,注,傳統(tǒng)做法是在原碼的基礎(chǔ)上“取反加1”。
答案:B
3、(09年鎮(zhèn)江三模)如果X為負(fù)數(shù),由[x]補(bǔ)求[-x]補(bǔ)是將(???? )
A、[x]補(bǔ)各值保持不變????????????????? B、[x]補(bǔ)符號位變反,其他各位不變
C、[x]補(bǔ)除符號位外,各位變反,末位加1
D、[x]補(bǔ)連同符號位一起各位變反,末位加1
分析:不論X是正數(shù)還是負(fù)數(shù),由[X]補(bǔ)求[-X]補(bǔ)的方法是對[X]補(bǔ)求補(bǔ),即連同符號位一起按位取反,末位加1。
答案:D
二、判斷題
1.計算機(jī)中一個浮點(diǎn)數(shù)N可用±2P×S表示,那么用規(guī)格化數(shù)表示,則尾數(shù)S必須滿足0.5≤|S|<1。
【答案】對
【解題指導(dǎo)】一個浮點(diǎn)形式的尾數(shù)S若滿足0.5≤|S|<1,且尾數(shù)的最高位數(shù)為1,無無效的0,則該浮點(diǎn)數(shù)稱為規(guī)格化數(shù);規(guī)格化數(shù)可以提高運(yùn)算的精度。
三、填空題
1.二進(jìn)制數(shù)0.011011的規(guī)格化數(shù)為 1111111101101100 ,二進(jìn)制數(shù)-11011的規(guī)格化數(shù)為?? 0000010110010100 。(尾數(shù)、階碼均用8位二進(jìn)制補(bǔ)碼表示)
分析:0.011011可表示為0.11011×2-1,即規(guī)格化數(shù)為0.11011×2-1
????? -11011可表示為-0.11011×25,即規(guī)格化數(shù)為0.11011×2101
2、已知X、Y為兩個有符號數(shù)的定點(diǎn)整數(shù),它們的補(bǔ)碼為:[x]補(bǔ)=00010011B,[y]補(bǔ)=11111001B,則[X+Y]補(bǔ)=???????????? B。
分析:[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ),X為正數(shù),Y為負(fù)數(shù),故列式結(jié)果不溢出為00001100。
答案:00001100
原碼、反碼和補(bǔ)碼的概念當(dāng)堂練習(xí)
一、選擇題
(?? )1、機(jī)器數(shù)80H所表示的真值是-128,則該機(jī)器數(shù)為??????? 形式的表示。
A、原碼??????????? B、反碼????????? C、補(bǔ)碼??????????? D、移碼
(?? )2、在浮點(diǎn)數(shù)中,階碼、尾數(shù)的表示格式是??????????? 。
?? A、階碼定點(diǎn)整數(shù),尾數(shù)定點(diǎn)小數(shù)?????? B、階碼定點(diǎn)整數(shù),尾數(shù)定點(diǎn)整數(shù)
C、階碼定點(diǎn)小數(shù),尾數(shù)定點(diǎn)整數(shù)?????? D、階碼定點(diǎn)小數(shù),尾數(shù)定點(diǎn)小數(shù)
(?? )3、已知[x]補(bǔ)=10110111,[y]補(bǔ)=01001010,則[x-y]補(bǔ)的結(jié)果是??????????? 。
?? A、溢出?????????? B、01101010????? C、01001010??????? D、11001010
(?? )4、某機(jī)字長8位,含一位數(shù)符,采用原碼表示,則定點(diǎn)小數(shù)所能表示的非零最小正數(shù)為???? 。
?? A、2-9??????????????????? B、2-8????????????????? C、-1????????????? D、2-7
(?? )5、(08年)下列數(shù)中最小的數(shù)是____C____。
A.[10010101]原??????? ??????????? B.[10010101]反????? ??????????? C.[10010101]補(bǔ)???? ??????????? D.[10010101]2
(?? )6、(12年)8位補(bǔ)碼表示的定點(diǎn)整數(shù)的范圍是? B???? 。
?? A、-128~+128??????? B、-128~+127????? C、-127~+128??? D、-127~+127
(?? )7、(11年鹽城二模)已知X的補(bǔ)碼為10110100,Y的補(bǔ)碼為01101010,則X-Y的補(bǔ)碼為 ???????。
A) 01101010????? ????? B) 01001010???? ??? C) 11001010?? ??????? D) 溢出
(?? )8、將-33以單符號位補(bǔ)碼形式存入8位寄存器中,寄存器中的內(nèi)容為(???? )。
A.DFH???????? B.A1H???????? C.5FH???????? D.DEH
(?? )9、在機(jī)器數(shù)的三種表示形式中,符號位可以和數(shù)值位一起參加運(yùn)算的是(? )
A)原碼????? B)補(bǔ)碼????? C)反碼?????? D)反碼、補(bǔ)碼
二、判斷題
(?? )1、16位的補(bǔ)碼表示的定點(diǎn)整數(shù)的最小值是-32768。
(?? )2、(10年南京二模)一個數(shù)在計算機(jī)中分別用原碼、反碼、補(bǔ)碼表示時一定各不相同。
(?? )3、(10年常州三模)字長相同,定點(diǎn)法表示數(shù)的范圍比浮點(diǎn)法小。
(?? )4.若用八位二進(jìn)制數(shù)來表示一個有符號數(shù),則原碼、反碼和補(bǔ)碼表示的數(shù)的個數(shù)與范圍均相同。
三、填空題
1、十進(jìn)制數(shù)-27對應(yīng)的8位二進(jìn)制補(bǔ)碼為???????????? 。
2、(11年)已知X、Y為兩個帶符號的定點(diǎn)整數(shù),它們的補(bǔ)碼為:[X]補(bǔ)=00010011B,[Y]補(bǔ)=11111001B,則[X+Y]補(bǔ) = ????00001100?? ?B。
3、數(shù)x的真值為-0.1011B,其原碼表示為???????????? ,補(bǔ)碼表示為???????????? 。
4、八位定點(diǎn)整數(shù),采用二進(jìn)制補(bǔ)碼表示時,所能表示真值的十進(jìn)制數(shù)的范圍是???????????? 。
5、(09年)已知[X]補(bǔ)=01110111B,[Y]補(bǔ)=01100010B,則[X-Y] 補(bǔ)=______00010101__________。
6、(11年)一個含有6個“1”、2個“0”的八位二進(jìn)制整數(shù)原碼,可表示的最大數(shù)為????? 7EH?????? 。(用十六進(jìn)制表示)
7、(12年)已知[X]補(bǔ)=10000000B,則X= -10000000? B。
8、(10年鹽城二模)二進(jìn)制數(shù)10110000,若看成純小數(shù),且為補(bǔ)碼,則其對應(yīng)真值的十進(jìn)制數(shù)是________。
原碼、反碼和補(bǔ)碼的概念課后練習(xí)
一、選擇題
(?? )1、(10年鹽城二模)“溢出”一般是指計算機(jī)在運(yùn)算過程是產(chǎn)生的?? _____ 。
A、數(shù)據(jù)量超過內(nèi)存容量?????????? B、文件個數(shù)超過磁盤目錄區(qū)規(guī)定的范圍
C、數(shù)據(jù)超過了機(jī)器的位所能表示的范圍???? D、數(shù)據(jù)超過了變量的表示范圍
(?? )2、設(shè)有二進(jìn)制數(shù)X=-1101110,若采用8位二進(jìn)制數(shù)表示,則[X]補(bǔ)的結(jié)果是????? 。
????? A、11101101??????? B、10010011????? C、00010011??????? D、10010010
(?? )3、假設(shè)有一個16機(jī)的某存儲單元存放著數(shù)1101101101001000,若該數(shù)作為原碼表示十進(jìn)制有符號整數(shù)(其中最高位為符號位)時,其值為???????????? 。
?????? A、-55510??????????? B、-23368????????? ?C、-18762??????? D、56136
(?? )4、計算機(jī)內(nèi)的數(shù)有浮點(diǎn)和定點(diǎn)兩種表示方法。一個浮點(diǎn)法表示的數(shù)由兩部分組成,即?? 。
A)指數(shù)和基數(shù)????? ?B) 尾數(shù)和小數(shù) ????C) 階碼和尾數(shù) ??????D) 整數(shù)和小數(shù)
二、判斷題
(?? )1.負(fù)數(shù)的補(bǔ)碼就是原碼逐位取反后的結(jié)果。
(?? )2.[X]補(bǔ)是一個正數(shù)還是一個負(fù)數(shù),是根據(jù)[X]補(bǔ)的符號位是“0”還是“1”確定的。
三、?????? 填空題
1、(11年鹽城二模)已知[X]補(bǔ)=11111111,X對應(yīng)的真值是??????? -1? ???????????。
2、已知[x]補(bǔ)=10111011,[y]補(bǔ)=01101101,則[x+y]補(bǔ)=__________
3、(10年南京二模).已知[X]補(bǔ)=10000000B,則X=??????? (十進(jìn)制)。
第二節(jié) 數(shù)制及數(shù)制的轉(zhuǎn)換鞏固練習(xí)
一、選擇題
1.(1110)2×(1011)2=———。
A)11010010????? B)10111011?? C)10110110? D)10011010
2.十六進(jìn)制數(shù)(AB)16變換為等值的八進(jìn)制數(shù)是____。
A)253 B)35l????? C)243???? D)101
3.下列數(shù)中最大的數(shù)是???????????? 。
A)(227)8??? ?????? B)(1FF)16? C)(10100001)2 D)(1789)10
4.十進(jìn)制數(shù)87轉(zhuǎn)換成二進(jìn)制數(shù)是???????????? 。
A)(1010111)2????? B)(1101010)2?? C)(1110011)2? )D、(1010110)2
5.十進(jìn)制數(shù)1385轉(zhuǎn)換成十六進(jìn)制數(shù)為?????? 。
A)568 ?????? B)569???? C)D85??? D)D55
6、(12年)下列不同進(jìn)制數(shù)中最大的數(shù)是?? D????????? 。
A、10111001B? ?????????B、257Q?????????? C、97D?????????????? D、BFH
二、判斷題
(?? )1、1000H是1000Q的2倍,因為16是8的2倍。
(?? )2.十進(jìn)制數(shù)要轉(zhuǎn)換成十六進(jìn)制數(shù)必須先轉(zhuǎn)換為二進(jìn)制數(shù)然后再由二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)。
(?? )3.計算機(jī)中也可以直接處理十六進(jìn)制數(shù)。
三、填空題
1.將一個十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),采用???????????? 的方法,將所有的余數(shù)按照先后順序組合的一起即可,而將一個純小數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)則可采用?????????? ??的方法,然后將所有的整數(shù)按照一定順序組合在一起。
2、(09年)十進(jìn)制數(shù)25.1875對應(yīng)的二進(jìn)制數(shù)是____11001.0011 。
3、一個二進(jìn)制整數(shù)右端加上三個零,形成的新數(shù)是原數(shù)的?????????????? 倍。
4.八進(jìn)制數(shù)37.4O轉(zhuǎn)換成二進(jìn)制數(shù)為???????????? 原碼、反碼和補(bǔ)碼的概念
本節(jié)要求
掌握原碼、反碼、補(bǔ)碼的概念
知識精講
數(shù)值型數(shù)據(jù)的表示按小數(shù)點(diǎn)的處理可分為定點(diǎn)數(shù)和浮點(diǎn)數(shù);按符號位有原碼、反碼和補(bǔ)碼三種形式的機(jī)器數(shù)。
一.計算機(jī)中數(shù)據(jù)的表示方法
1、數(shù)的定點(diǎn)與浮點(diǎn)表示
在計算機(jī)內(nèi)部,通常用兩種方法