組成原理計算機數(shù)值表示

今天偶然碰到補碼反碼墩划,才發(fā)現(xiàn)自己一直搞錯了一個事實春塌,n位二進制表示的原碼晓避,反碼,補碼范圍是不一樣的只壳。于是重新在紙上畫一畫俏拱,總結(jié)總結(jié)。
以8位2進制為例:

碼制 范圍
原碼 -127 ~ 127
反碼 -127 ~ 127
補碼 -128 ~ 127

為什么補碼會比原碼和反碼多一個呢吼句?8位2進制編碼結(jié)果一共有256種锅必。原碼和反碼127*2+1=255種,而補碼是128+127+1=256種惕艳。問題是出在0上况毅。

  • 原碼:
    0000 0000 - 0111 1111 : 0 ~ 127
    1000 0000 : -0
    1000 0001 - 1111 1111: -1 ~ -127

  • 反碼:正數(shù)的反碼和原碼一致,負數(shù)的反碼是原碼除符號位以外取反
    0000 0000 - 0111 1111 : 0 ~ 127
    1111 1111 : -0
    1111 1110 - 1000 0000 : -1 ~ -127

  • 補碼:正數(shù)的補碼和反碼一致尔艇,負數(shù)的補碼是反碼加1
    0000 0000 - 0111 1111 : 0 ~127
    [1]0000 0000: -0
    1111 1111 - 1000 0001 :-1 ~ -127
    注:[1]截斷,則0和-0相同么鹤,和數(shù)學(xué)統(tǒng)一终娃。

從上面可以看出:[+0]和[-0]的原碼和反碼都是不一樣,而補碼是一樣的蒸甜。所以原碼和反碼只有255個棠耕,補碼多出一個編碼1000 0000沒有用余佛,于是規(guī)定用這個來表示-128。

順便在談一點為什么計算機采用補碼表示數(shù)值?

  1. 因為原碼和反碼中0有2種編碼規(guī)則窍荧,而補碼只有一種辉巡。
  2. 更重要的是看下面:
    • [1]原 - [1]原 = [1]原 + [-1]原:
      0000 0001 + 1000 0001 = 1000 0001 顯然結(jié)果是錯的。
    • [1]反 - [1]反 = [1]反 + [-1]反:
      0000 0001 + 1111 1110 = 1111 1111 = -0 在數(shù)學(xué)中0沒有正負蕊退。
  • [1]補 - [1]補 = [1]補 + [-1]補:
    0000 0001 + 1111 1111 = [1]0000 0000 [1]截斷郊楣,此時結(jié)果為0的補碼。正確

從上面看出瓤荔,補碼運算時不需要考慮符號位的問題净蚤,符號位可以直接參與計算,且0的表示方式唯一不分正負输硝,也是符合數(shù)理邏輯今瀑。

順便在談?wù)劯呒壵Z言中,unsigned int和int看來也只不過是編譯器對數(shù)的解釋方式不同点把,在底層橘荠,數(shù)的表示是統(tǒng)一的。有時候要注意溢出問題:

//偽代碼
for (unsigned int8 n = 5; n >= 0; n--){
          ......
}

這種寫法應(yīng)該是一種死循環(huán)郎逃,[0]補 - [1]補 = [0]補 + [-1]補 = 0000 0000 + 1111 1111 = 1111 1111哥童。定義為unsigned時,編譯器會采用無符號數(shù)來解釋衣厘,于是[1111 1111]補本應(yīng)該等于1如蚜,無符號數(shù)時則為512。也就永遠不會跳出循環(huán)影暴。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末错邦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子型宙,更是在濱河造成了極大的恐慌撬呢,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妆兑,死亡現(xiàn)場離奇詭異魂拦,居然都是意外死亡,警方通過查閱死者的電腦和手機搁嗓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門芯勘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人腺逛,你說我怎么就攤上這事荷愕。” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵安疗,是天一觀的道長抛杨。 經(jīng)常有香客問我,道長荐类,這世上最難降的妖魔是什么怖现? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮玉罐,結(jié)果婚禮上屈嗤,老公的妹妹穿的比我還像新娘。我一直安慰自己厌小,他們只是感情好恢共,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著璧亚,像睡著了一般讨韭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上癣蟋,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天透硝,我揣著相機與錄音,去河邊找鬼疯搅。 笑死濒生,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的幔欧。 我是一名探鬼主播罪治,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼礁蔗!你這毒婦竟也來了觉义?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤浴井,失蹤者是張志新(化名)和其女友劉穎晒骇,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體磺浙,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡洪囤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了撕氧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘤缩。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖伦泥,靈堂內(nèi)的尸體忽然破棺而出骗污,到底是詐尸還是另有隱情,我是刑警寧澤彼乌,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布绵脯,位于F島的核電站,受9級特大地震影響跨新,放射性物質(zhì)發(fā)生泄漏富腊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一域帐、第九天 我趴在偏房一處隱蔽的房頂上張望赘被。 院中可真熱鬧,春花似錦肖揣、人聲如沸民假。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羊异。三九已至,卻和暖如春彤断,著一層夾襖步出監(jiān)牢的瞬間野舶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工宰衙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留平道,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓供炼,卻偏偏與公主長得像一屋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子袋哼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 今天偶然碰到補碼反碼冀墨,才發(fā)現(xiàn)自己一直搞錯了一個事實,n位二進制表示的原碼先嬉,反碼轧苫,補碼范圍是不一樣的。于是重新在紙上...
    wayyyy閱讀 805評論 0 0
  • 本篇文章講解了計算機的原碼, 反碼和補碼. 并且進行了深入探求了為何要使用反碼和補碼, 以及更進一步的論證了為何可...
    yang2yang閱讀 2,249評論 1 13
  • 網(wǎng)站亂碼問題我們會經(jīng)常碰到疫蔓,大多見于非英文的中文字符或其他字符亂碼含懊,而且,這類問題常常是因為編碼方式問題衅胀,主要原因...
    波段頂?shù)?/span>閱讀 2,870評論 1 9
  • 嫁給一個懂得好好說話的家庭有多重要岔乔。 01 好朋友蓉在美甲店里做指甲,中間進來一個電話滚躯,因為不方便接聽雏门,蓉按了免提...
    白落小姐閱讀 220評論 0 0
  • 靜氣三分鐘嘿歌。扭羊頭。一個簡單辦法茁影。 以下方白子為中心宙帝,向后方數(shù)2子(也就是向上數(shù))的點為起點,沿對角線畫線募闲,為其中...
    土家閱讀 510評論 0 0