雜談——-128的補(bǔ)碼為什么是10000000_第1頁(yè)
雜談——-128的補(bǔ)碼為什么是10000000_第2頁(yè)
雜談——-128的補(bǔ)碼為什么是10000000_第3頁(yè)
雜談——-128的補(bǔ)碼為什么是10000000_第4頁(yè)
雜談——-128的補(bǔ)碼為什么是10000000_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、雜談-128 的補(bǔ)碼為什么是10000000展開相信很多人在初學(xué)原碼、反碼、補(bǔ)碼的時(shí)候總是容易搞蒙。雖然書上寫的很清楚, 但是每次到要用的時(shí)候總是會(huì)忘記。 當(dāng)初只好死記硬背下來應(yīng)付考試,但個(gè)中緣由還是難以知曉。書中關(guān)于原碼、反碼、補(bǔ)碼的描述如下:原碼表示法是機(jī)器數(shù)的一種簡(jiǎn)單的表示法。 其符號(hào)位用 0 表示正號(hào),用:表示負(fù)號(hào),數(shù)值一般用二進(jìn)制形式表示。機(jī)器數(shù)的反碼可由原碼得到。 如果機(jī)器數(shù)是正數(shù), 則該機(jī)器數(shù)的反碼與原碼一樣; 如果機(jī)器數(shù)是負(fù)數(shù), 則該機(jī)器數(shù)的反碼是對(duì)它的原碼(符號(hào)位除外)各位取反而得到的。機(jī)器數(shù)的補(bǔ)碼可由原碼得到。 如果機(jī)器數(shù)是正數(shù), 則該機(jī)器數(shù)的補(bǔ)碼與原碼一樣; 如果機(jī)器數(shù)是

2、負(fù)數(shù), 則該機(jī)器數(shù)的補(bǔ)碼是對(duì)它的原碼(除符號(hào)位外)各位取反,并在未位加 1 而得到的。顯然, 上文中的描述將這三個(gè)碼的定義和關(guān)系描述的很清楚。 如果是為了考試的話,只要死記其中規(guī)則,按著定義套就好了。但我總是很想弄清楚計(jì)算機(jī)里面的數(shù)到底為什么要這樣子表達(dá)?意義何在?-128 的補(bǔ)碼為什么是10000000 ?為什么負(fù)數(shù)的補(bǔ)碼就等于原碼的反碼加一?難道計(jì)算機(jī)算減法的時(shí)候都必須利用補(bǔ)碼來做加法嗎?后來看了網(wǎng)上很多文章, 于是有了一些認(rèn)識(shí)。 正好在這里給大家分享一下。首先呢,我們需要了解一下補(bǔ)碼的來歷。計(jì)算機(jī)電路只用開和關(guān)來表示, 因此計(jì)算機(jī)只有用二進(jìn)制來表示數(shù)據(jù)。然后計(jì)算機(jī)只有加法器,沒有減法器,

3、所以計(jì)算機(jī)內(nèi)減法只有轉(zhuǎn)化為加法才能存儲(chǔ)。而用補(bǔ)碼代替原碼,可把減法轉(zhuǎn)變?yōu)榧臃?。而進(jìn)行運(yùn)算中出現(xiàn)的進(jìn)位就是模,此時(shí)的進(jìn)位,就應(yīng)該忽略不計(jì)。那么什么叫做“模”呢?舉個(gè)例子假設(shè)現(xiàn)在是三點(diǎn)鐘,請(qǐng)問六個(gè)小時(shí)前時(shí)幾點(diǎn)鐘呢?顯然,鐘表用的是十二時(shí),那么他的模就是12 。那么六小時(shí)前是幾點(diǎn)呢?要知道這個(gè)很簡(jiǎn)單,只需要將時(shí)針逆時(shí)針回?fù)芰r(shí)即可,即九點(diǎn)鐘。這個(gè)用數(shù)字來怎么表現(xiàn)呢?3-6 為什么會(huì)是9 呢?其實(shí), 在出現(xiàn)減法的時(shí)候, 它就會(huì)轉(zhuǎn)化成加法。那怎么轉(zhuǎn)化呢?如下即 3+ ( 12-6 ) =9 。這下大家應(yīng)該就懂什么叫做模了。接下來我們?cè)俅螌⒆⒁饬D(zhuǎn)到補(bǔ)碼上。舉上面這個(gè)例子的目的呢, 就是想說明計(jì)算機(jī)中如

4、何進(jìn)行減法運(yùn)算的, 即計(jì)算機(jī)里面所有數(shù)都以補(bǔ)碼形式保存, 加減運(yùn)算都是補(bǔ)碼之間的加法運(yùn)算既然計(jì)算機(jī)中的運(yùn)算也是利用模來計(jì)算的, 那么, 它的模是多少呢?誰(shuí)是它的模?實(shí)際上,符號(hào)位在補(bǔ)碼運(yùn)算里面是“模” ,它本身并不帶符號(hào)的意義。既然它不帶有符號(hào)的意義,我們?yōu)槭裁催€要叫它符號(hào)位呢?因?yàn)橛?jì)算機(jī)將加法轉(zhuǎn)換成加上一個(gè)“負(fù)數(shù)” ,而負(fù)數(shù)又以補(bǔ)碼的形式表現(xiàn)。 補(bǔ)碼比源碼多一位, 從這多出來的一位可以推斷出原來數(shù)字的正負(fù)號(hào),所以成為了符號(hào)位?;蛘呶覀円部梢赃@樣認(rèn)為,即留出一位(不全部占滿)的原因是要用“?!眮肀硎菊?fù)數(shù)。也就是說,不是特意留出一個(gè)符號(hào)位,用 1 和 0 來表示正負(fù)號(hào)。而是補(bǔ)碼運(yùn)算可以用最高位

5、來表示正負(fù),所以符號(hào)位誕生了。那么二進(jìn)制的模是多少呢?二進(jìn)制下,有多少位數(shù)參加運(yùn)算,模就是在1 的后面加上多少個(gè) 0。這個(gè)時(shí)候我們就可以嘗試去解答本篇博客題目所提出的問題了為什么(八位二進(jìn)制中) -128 的補(bǔ)碼是 10000000 ?其實(shí),我們可以這樣理解: -128 是一個(gè)負(fù)數(shù),而負(fù)數(shù)的補(bǔ)碼等于模減去該數(shù)的絕對(duì)值。所以 -128 的補(bǔ)碼是它的“模” (即 256 )減去它的絕對(duì)值,即:100000000 - 10000000 = 10000000這樣我們就解決了最基本的問題了。接下來我們?cè)賮戆催@個(gè)思路進(jìn)行拓展, 來想想為什么負(fù)數(shù)補(bǔ)碼等于源碼的反碼加一。為什么呢?其實(shí)這個(gè)結(jié)論我們可以這樣推導(dǎo)100000000 - 10000000= (11111111 + 00000001) - 10000000= 11111111 - 10000000 + 1= 10000000這樣我們就得到了負(fù)數(shù)補(bǔ)碼等于原碼的反碼加一的結(jié)論。實(shí)際上, 將負(fù)數(shù)用補(bǔ)碼表示, 實(shí)際上是實(shí)現(xiàn)了一種從-128, 127到 0, 255 的映射。下面附上一張表,大家會(huì)了解得更加清楚的。數(shù)值( 0255 ) 數(shù)值( -128127 ) 二進(jìn)制255-111111111254-211111110253-311111101226-3011100010186-701011101

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論