機器數(shù)
各種數(shù)據(jù)在計算機內部的表示和存儲形式稱為機器數(shù)。
特點:
- 采用二進制計數(shù)佩谣;
- 數(shù)的符號(正負)用“0把还、1”表示;
- 小數(shù)點隱含表示二不占位置。
機器數(shù)的真值
機器數(shù)所對應的實際數(shù)值吊履。
機器數(shù)的分類
無符號機器數(shù)和帶符號機器數(shù)安皱。
無符號機器數(shù)(表示正數(shù))
無符號(無正負號)機器數(shù)表示正數(shù),全部二進制位均代表數(shù)值艇炎,沒有符號位酌伊。
- 若約定小數(shù)點的位置在機器數(shù)的最低位之后,則是純整數(shù)(正整數(shù))缀踪。
- 若約定小數(shù)點的位置在機器數(shù)的最高位之前腺晾,則是純小數(shù)(正小數(shù))。
- 不能用原碼辜贵、反碼、補碼等編碼方法表示归形。
帶符號機器數(shù)(表示實數(shù))
帶符號機器數(shù)既可以表示正數(shù)托慨,也可以表示負數(shù)。
最高位是符號位("0"表示“+”暇榴『窨茫“1”表示“-”),其余位表示數(shù)值蔼紧。
若約定小數(shù)點的位置在機器數(shù)的最低位之后婆硬,則是純整數(shù)。
若約定小數(shù)點的位置在機器數(shù)的最高位之前奸例,則是純小數(shù)彬犯。
可采用原碼、反碼查吊、補碼等編碼方法表示谐区。
碼制
為了運算方便,帶符號的機器數(shù)可采用原碼逻卖、反碼宋列、補碼、移碼等不同的編碼方式表示评也。
這些編碼方法被稱為碼制炼杖。
原碼表示
規(guī)則:
數(shù)值X的原碼記為[X]原;
機器字長為n,即采用n個二進制位表示數(shù)據(jù)盗迟。
最高位為符號位坤邪,“0”表示正號,“1”表示負號罚缕。
其余的n-1位表示數(shù)值的絕對值罩扇。
對數(shù)“0”有“+0”和“- 0”兩種表示形式。
對于機器字長為n+1位的機器,原碼表示法可表示的整型數(shù)值范圍為:-2n+1 ≤ X ≤ 2n-1喂饥。
當X ≥ 0時消约,[X]原 = 0X; eg:[+7]原 = 00000111 (設機器字長為8)员帮。
當X ≤ 0時或粮,[X]原 = 1X; eg:[- 7]原 = 10000111 (設機器字長為8)捞高。
[+0]原 = 00000000氯材;
[- 0]原 = 10000000;
Example-1:
[+1]原 = 00000001硝岗; [-1]原 = 10000001氢哮。
[+127]原 = 01111111; [-127]原 = 11111111型檀。注:(127)D = (1111111)B冗尤。
[+45]原 = 00101101; [-45]原 = 10101101胀溺。 注:(45)D = (101101)B裂七。
反碼表示
規(guī)則:
數(shù)值X的反碼記為[X]反;
機器字長為n,即采用n個二進制位表示數(shù)據(jù)仓坞。
最高位為符號位背零,“0”表示正號,“1”表示負號无埃。
其余的n-1位表示數(shù)值徙瓶。
對數(shù)“0”有“+0”和“-0”兩種表示形式。
對于機器字長為n+1位的機器嫉称,反碼表示法可表示的整型數(shù)值范圍為:-2n+1 ≤ X ≤ 2n-1倍啥。
正數(shù)的反碼與原碼相同。即當X ≥ 0時澎埠,[X]反 = [X]原 = 0X虽缕。
負數(shù)的反碼則是要將除符號位外的絕對值按位取反。
當X ≥ 0時蒲稳,[X]反 = 0 X氮趋; eg:[+7]反 [+7]原 = 00000111 (設機器字長為8)。
當X ≤ 0時江耀,[X]反 = 1 |X|剩胁; eg:[- 7]反 = 11111000 (設機器字長為8)。
[+0]反 = 00000000祥国;
[- 0]反 = 11111111昵观;
Example-1:
[+1]反 = 00000001晾腔; [-1]反 = 11111110。
[+127]反 = 01111111啊犬; [-127]反 = 10000000灼擂。注:(127)D = (1111111)B。
[+45]反 = 00101101觉至; [-45]反 = 11010010剔应。 注:(45)D = (101101)B。
補碼表示
規(guī)則:
數(shù)值X的補碼記為[X]補语御;
機器字長為n,即采用n個二進制位表示數(shù)據(jù)峻贮。
最高位為符號位,“0”表示正號应闯,“1”表示負號纤控。
其余的n-1位表示數(shù)值。
對數(shù)“0”只有唯一的“0”一種表示形式碉纺。
[+0]補 = 00000000船万;
[- 0]補 = 00000000;
對于機器字長為n+1位的機器惜辑,反碼表示法可表示的整型數(shù)值范圍為:-2n ≤ X ≤ 2n-1。
正數(shù)的補碼與其反碼和原碼相同疫赎。即當X ≥ 0時盛撑,[X]補 = [X]反 = [X]原 = 0X。
負數(shù)的補碼則等于在其反碼的末尾加1(將其原碼除符號位外的其他位按位取反后加1)捧搞。
當X ≥ 0時抵卫,[X]補 = [X]反 = [X]原 = 0X; eg:[+7]補 = [+7]反 = [+7]原 = 00000111 (設機器字長為8)胎撇。
當X < 0時介粘,[X]補 = 1 |X| +1 eg:[- 7]補 = 11111001 [- 7]反 = 11111000(設機器字長為8)。
Example-1:
[+1]補 = 00000001晚树; [- 1]反 = 11111110姻采; [- 1]補 = 11111111。
[+127]補 = 01111111爵憎; [- 127]反 = 10000000慨亲; [- 127]補 = 10000001。注:(127)D = (1111111)B宝鼓。
[+45]補 = 00101101刑棵; [- 45]反 = 11010010; [- 45]補 = 11010011愚铡。 注:(45)D = (101101)B蛉签。
補碼運算的優(yōu)點(功能)
將減法運算變成加法運算(因為運算器中只有加法器)。
例如計算96 - 20 = ?碍舍。
96 -20 76
無符號位二進制表示 1100000 -10100 1001100
原碼 01100000 10010100 01001100
反碼 01100000 11101011 01001100
補碼 01100000 11101100 01001100
將96-20轉換為[96]補 + [-20]補柠座,計算過程如下:
最高位的進位1自然丟失。
補碼表示的一個另外情況(原碼乒验、反碼表示無此情況)
對于n位補碼表示法愚隧,當符號位為1而數(shù)值位全部為0時,它表示整數(shù) -2n-1,即此時符號位的1锻全,既表示負數(shù)又表示數(shù)值狂塘。
Eg:當機器字長為8時,符號位為1而數(shù)值位全部為0為數(shù)值 10000000鳄厌,(10000000)B = (128)D = 28-1 = 27 = 128荞胡。且符號位還表示負號。
所以[- 128]補 = 10000000了嚎。
補碼的另一特點
用補碼表示時泪漂,由于符號位和數(shù)值位一起編碼,難以從補碼碼值形式判斷真值大小歪泳。如45 > - 45萝勤,然而,[45]補 = 00101101 < [- 45]補 = 11010011呐伞。
移碼(增碼)表示
移碼(又叫增碼)是符號位取反的補碼敌卓,將補碼的符號位取反即可得到移碼表示;一般用做浮點數(shù)的階碼伶氢,引入的目的是為了保證浮點數(shù)的機器零為全0趟径。
采用移碼表示時,碼值與真值大小成正比癣防,碼值大者對應的真值也大蜗巧。
規(guī)則:
最高位為符號位,“1”表示正號蕾盯,“0”表示負號幕屹。
機器字長為n,即采用n個二進制位表示數(shù)據(jù)。
當-2n ≤ X ≤ 2n時级遭,[X]移 = 2n+X香嗓。
特點:
保持了數(shù)據(jù)原有的大小順序,便于進行比較操作装畅。
機器數(shù)的加減運算
在計算機中靠娱,可以只設置加法器,而將減法運算轉換為加法運算來實現(xiàn)掠兄。
原碼加像云、減法
兩個符號相同的原碼數(shù)相加時锌雀,只需將數(shù)值部分直接相加,運算結果的符號與兩個加數(shù)的符號相同迅诬。
若兩個加數(shù)的符號相異腋逆,則應進行減法運算。方法:先比較兩個數(shù)絕對值的大小侈贷,然后用絕對值大者的絕對值減去絕對值小者的絕對值惩歉,結果的符號取絕對值大者的符號。
原碼表示的機器數(shù)進行減法運算是很煩的俏蛮,所以在計算機中的加撑蚌、減法運算主要采用補碼表示的機器數(shù)。
補碼加搏屑、減法
計算機中的加争涌、減法運算一般用補碼來實現(xiàn)。
在補碼表示中辣恋,可將減法運算轉換成加法運算亮垫。
補碼加法:
和的補碼等于補碼求和∥肮牵 [X+Y]補 = [X]補+[Y]補
補碼減法:
差的補碼等于被減數(shù)的補碼加上減數(shù)取負后的補碼饮潦。 [X-Y]補 = [X]補+[-Y]補
由[X]補求[-X]補的方法:
將[X]補的各位取反(包括符號位)携狭,末尾加1继蜡。
總結:
X±Y → [X+Y]補=[X]補+[±Y]補
Example-1:
設二進制整數(shù)X = +1000100, Y = +1110,求X+Y與X-Y的值。
解:
設用8位補碼表示帶符號機器數(shù)
因為X和Y都是正數(shù)
所以[X]補 = 01000100暑中,[Y]補 = 00001110壹瘟;
機器數(shù)的乘除運算
機器數(shù)的乘除法運算鲫剿,通常有如下3種實現(xiàn)形式:
1.純軟件方案鳄逾。在只有加法器的低檔計算機中,沒有乘灵莲、除法指令雕凹,乘除運算使用程序來實現(xiàn)的。這種方案的硬件結構簡單政冻,但作乘除法運算時速度緩慢枚抵。
2.在現(xiàn)有的能夠完成加減運算的算術邏輯單元ALU的基礎上,通過增加少量的左明场、右移位的邏輯電路汽摹,來實現(xiàn)乘除運算。與純軟件方案相比苦锨,這種方案增加硬件不多逼泣,而乘除法的運算速度有了較大提高趴泌。
3.設置專用的硬件陣列乘法器(或除法器),完成乘除法運算拉庶。該方案需付出較高的硬件代價嗜憔,可獲得最高的執(zhí)行速度。