機器數(shù)與碼制——如何在計算機內部存儲數(shù)字鹏氧、進行數(shù)據(jù)運算

機器數(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í)行速度。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末氏仗,一起剝皮案震驚了整個濱河市吉捶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌皆尔,老刑警劉巖呐舔,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異床佳,居然都是意外死亡滋早,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門砌们,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杆麸,“玉大人,你說我怎么就攤上這事浪感∥敉罚” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵影兽,是天一觀的道長揭斧。 經常有香客問我,道長峻堰,這世上最難降的妖魔是什么讹开? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮捐名,結果婚禮上旦万,老公的妹妹穿的比我還像新娘。我一直安慰自己镶蹋,他們只是感情好成艘,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贺归,像睡著了一般淆两。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拂酣,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天秋冰,我揣著相機與錄音,去河邊找鬼婶熬。 笑死剑勾,一個胖子當著我的面吹牛光坝,可吹牛的內容都是我干的。 我是一名探鬼主播甥材,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼盯另,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了洲赵?” 一聲冷哼從身側響起鸳惯,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叠萍,沒想到半個月后芝发,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡苛谷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年辅鲸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腹殿。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡独悴,死狀恐怖,靈堂內的尸體忽然破棺而出锣尉,到底是詐尸還是另有隱情刻炒,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布自沧,位于F島的核電站坟奥,受9級特大地震影響,放射性物質發(fā)生泄漏拇厢。R本人自食惡果不足惜爱谁,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望孝偎。 院中可真熱鬧访敌,春花似錦、人聲如沸邪媳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雨效。三九已至,卻和暖如春废赞,著一層夾襖步出監(jiān)牢的瞬間徽龟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工唉地, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留据悔,地道東北人传透。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像极颓,于是被迫代替她去往敵國和親朱盐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內容