機器數(shù)及其編碼
1、?機器數(shù)與真值
機器只認識二進制數(shù):0、1。
這是因為,電路狀態(tài)常有兩個,如通、斷;高電平、低電平;…可用0、1表示。
這種0、1、0、1…1在機器中的表現(xiàn)形式——機器數(shù)。一般為8位。
2、?機器數(shù)的編碼及運算
????對帶符號數(shù)而言,有原碼、反碼、補碼之分,計算機內(nèi)一般使用補碼。
1)?原碼
將數(shù)“數(shù)碼化”,原數(shù)前“+”用0表示,原數(shù)前“-”用1表示,數(shù)值部分為該數(shù)本身,這樣的機器數(shù)叫原碼。
設(shè)X——原數(shù);則[X]原?=?X(X?0)
[X]原?=?2n-1?–?X?(X?0),n為字長的位數(shù)。
如,[+3]原?=?00000011B
[-3]原?=?27?-?(-3)?=?10000011B
0有兩種表示方法:00000000?+0
10000000?-0
原碼最大、最小的表示:+127、-128
2)?反碼
規(guī)定正數(shù)的反碼等于原碼;負數(shù)的反碼是將原碼的數(shù)值位各位取反。
[X]反?=?X?(X?0)
[X]反?=(2n?–1)+?X?(X?0)
如,[+4]反?=?[+4]原?=?00000100?B
[-4]反?=?(28?–1)+(-5)?=?11111111-?00000101?=?11111010?B
反碼范圍:-128?~?+127
兩個0;?+0?——?00000000?B
-0?——?11111111?B
3)?補碼
補碼的概念:現(xiàn)在是下午3點,手表停在12點,可正撥3點,也可倒撥9點。即是說-9的操作可用+3來實現(xiàn),在12點里:3、-9互為補碼。
運用補碼可使減法 變成加法。
規(guī)定:正數(shù)的補碼等于原碼。
負數(shù)的補碼求法:1)反碼?+?1
公 式:[X]補?=?2n?+?X?(X<0)
如,設(shè)X?=?-?0101110?B?,?則[X]原?=?10101110?B
則[X]補?=?[X]反?+?1?=?11010001?+?00000001?=?11010010?B
如,[+6]補?=?[+6]原?=?00000110?B
[-6]補?=?28?+?(-6)?=?10000000?–?00000110?=?11111010?B
8位補碼的范圍?–128?~?+127。
0?的個數(shù):只一個,即00000000
而10000000?B是-128的補碼。
原碼、反碼、補碼對照表:表1-2?P10
4)補碼的運算
當X≥0時,[X]補=?[X]反=[X]原
[?[X]補]補?=?[X]原
[X]補+?[Y]補?=?[?X+Y?]補
[?X-Y?]補=?[?X+(-Y)]補
例:已知?X=52?Y=38?求X-Y
計算機在做算術(shù)運算時,必需檢查溢出,以防止發(fā)生錯誤
5)運算的溢出問題
????資 料字長(位數(shù))有一定限制,所以資料的表示應(yīng)有一個范圍。
如字長8位時;?補碼范圍-128~+127
若運算結(jié)果超出這個范圍,便溢出。
例:
錯:兩個負數(shù)相加和為正數(shù)。
可見:結(jié)果正確 (無溢出)時,Cs+1?=?Cs
結(jié)果錯誤(溢出)時,Cs+1?≠?Cs?
溢出判斷:溢出?=?Cs+1?Cs(即結(jié)果是0為無溢出;1為有溢出)
?十進制數(shù)的編碼
對機器:二進制數(shù)方便,
對人?:二進制數(shù)不直觀,習慣于十進制數(shù)。
在編程過程中,有 時需要采用十進制運算,但機器不認識十進制數(shù)。
怎么辦?
可以將十進制的字符用二進制數(shù)進行編碼:
這叫做二進制數(shù)對十進制編碼——BCD碼。
上述每4位二進制數(shù)表示一個十進制字符,這4位中各位的權(quán)依次是:
8、4、2、1——8421?BCD碼。
BCD碼的運算:
(1)BCD碼加法規(guī)則
兩個BCD數(shù)相加時,“某位”的和小于10則保持不變;
兩個BCD數(shù)相加時,“某位”的和大于9,則和數(shù)應(yīng)加6修正。
(2)BCD碼減法規(guī)則
兩個BCD數(shù)相減時,“某位”的差未發(fā)生借位,則差數(shù)保持不變;
兩個BCD數(shù)相減時,“某位”發(fā)生了借位,其差應(yīng)減6修正。
這里“某位”指BCD數(shù)中的“個位”、“十位”、“百位”、……
1、?機器數(shù)與真值
機器只認識二進制數(shù):0、1。
這是因為,電路狀態(tài)常有兩個,如通、斷;高電平、低電平;…可用0、1表示。
這種0、1、0、1…1在機器中的表現(xiàn)形式——機器數(shù)。一般為8位。
2、?機器數(shù)的編碼及運算
????對帶符號數(shù)而言,有原碼、反碼、補碼之分,計算機內(nèi)一般使用補碼。
1)?原碼
將數(shù)“數(shù)碼化”,原數(shù)前“+”用0表示,原數(shù)前“-”用1表示,數(shù)值部分為該數(shù)本身,這樣的機器數(shù)叫原碼。
設(shè)X——原數(shù);則[X]原?=?X(X?0)
[X]原?=?2n-1?–?X?(X?0),n為字長的位數(shù)。
如,[+3]原?=?00000011B
[-3]原?=?27?-?(-3)?=?10000011B
0有兩種表示方法:00000000?+0
10000000?-0
原碼最大、最小的表示:+127、-128
2)?反碼
規(guī)定正數(shù)的反碼等于原碼;負數(shù)的反碼是將原碼的數(shù)值位各位取反。
[X]反?=?X?(X?0)
[X]反?=(2n?–1)+?X?(X?0)
如,[+4]反?=?[+4]原?=?00000100?B
[-4]反?=?(28?–1)+(-5)?=?11111111-?00000101?=?11111010?B
反碼范圍:-128?~?+127
兩個0;?+0?——?00000000?B
-0?——?11111111?B
3)?補碼
補碼的概念:現(xiàn)在是下午3點,手表停在12點,可正撥3點,也可倒撥9點。即是說-9的操作可用+3來實現(xiàn),在12點里:3、-9互為補碼。
運用補碼可使減法 變成加法。
規(guī)定:正數(shù)的補碼等于原碼。
負數(shù)的補碼求法:1)反碼?+?1
公 式:[X]補?=?2n?+?X?(X<0)
如,設(shè)X?=?-?0101110?B?,?則[X]原?=?10101110?B
則[X]補?=?[X]反?+?1?=?11010001?+?00000001?=?11010010?B
如,[+6]補?=?[+6]原?=?00000110?B
[-6]補?=?28?+?(-6)?=?10000000?–?00000110?=?11111010?B
8位補碼的范圍?–128?~?+127。
0?的個數(shù):只一個,即00000000
而10000000?B是-128的補碼。
原碼、反碼、補碼對照表:表1-2?P10
4)補碼的運算
當X≥0時,[X]補=?[X]反=[X]原
[?[X]補]補?=?[X]原
[X]補+?[Y]補?=?[?X+Y?]補
[?X-Y?]補=?[?X+(-Y)]補
例:已知?X=52?Y=38?求X-Y
計算機在做算術(shù)運算時,必需檢查溢出,以防止發(fā)生錯誤
5)運算的溢出問題
????資 料字長(位數(shù))有一定限制,所以資料的表示應(yīng)有一個范圍。
如字長8位時;?補碼范圍-128~+127
若運算結(jié)果超出這個范圍,便溢出。
例:
錯:兩個負數(shù)相加和為正數(shù)。
可見:結(jié)果正確 (無溢出)時,Cs+1?=?Cs
結(jié)果錯誤(溢出)時,Cs+1?≠?Cs?
溢出判斷:溢出?=?Cs+1?Cs(即結(jié)果是0為無溢出;1為有溢出)
?十進制數(shù)的編碼
對機器:二進制數(shù)方便,
對人?:二進制數(shù)不直觀,習慣于十進制數(shù)。
在編程過程中,有 時需要采用十進制運算,但機器不認識十進制數(shù)。
怎么辦?
可以將十進制的字符用二進制數(shù)進行編碼:
這叫做二進制數(shù)對十進制編碼——BCD碼。
上述每4位二進制數(shù)表示一個十進制字符,這4位中各位的權(quán)依次是:
8、4、2、1——8421?BCD碼。
BCD碼的運算:
(1)BCD碼加法規(guī)則
兩個BCD數(shù)相加時,“某位”的和小于10則保持不變;
兩個BCD數(shù)相加時,“某位”的和大于9,則和數(shù)應(yīng)加6修正。
(2)BCD碼減法規(guī)則
兩個BCD數(shù)相減時,“某位”的差未發(fā)生借位,則差數(shù)保持不變;
兩個BCD數(shù)相減時,“某位”發(fā)生了借位,其差應(yīng)減6修正。
這里“某位”指BCD數(shù)中的“個位”、“十位”、“百位”、……
評論