<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    keep moving!

    We must not cease from exploration. And the end of all our exploring will be to arrive where we began and to know the place for the first time.
    隨筆 - 37, 文章 - 2, 評(píng)論 - 3, 引用 - 0
    數(shù)據(jù)加載中……

    [轉(zhuǎn)]原碼、反碼、補(bǔ)碼

    原碼、反碼、補(bǔ)碼

         數(shù)值在計(jì)算機(jī)中表示形式為機(jī)器數(shù),計(jì)算機(jī)只能識(shí)別01,使用的是二進(jìn)制,而在日常生活中人們使用的是十進(jìn)制,"正如亞里士多德早就指出的那樣,今天十進(jìn)制的廣泛采用,只不過(guò)我們絕大多數(shù)人生來(lái)具有10個(gè)手指頭這個(gè)解剖學(xué)事實(shí)的結(jié)果.盡管在歷史上手指計(jì)數(shù)(5,10進(jìn)制)的實(shí)踐要比二或三進(jìn)制計(jì)數(shù)出現(xiàn)的晚."(摘自<<數(shù)學(xué)發(fā)展史>>有空大家可以看看哦~,很有意思的).為了能方便的與二進(jìn)制轉(zhuǎn)換,就使用了十六進(jìn)制(2 4)和八進(jìn)制(23).下面進(jìn)入正題.

    數(shù)值有正負(fù)之分,計(jì)算機(jī)就用一個(gè)數(shù)的最高位存放符號(hào)(0為正,1為負(fù)).這就是機(jī)器數(shù)的原碼了.假設(shè)機(jī)器能處理的位數(shù)為8.即字長(zhǎng)為1byte,原碼能表示數(shù)值的范圍為

    (-127~-0 +0~127)256個(gè).

     有了數(shù)值的表示方法就可以對(duì)數(shù)進(jìn)行算術(shù)運(yùn)算.但是很快就發(fā)現(xiàn)用帶符號(hào)位的原碼進(jìn)行乘除運(yùn)算時(shí)結(jié)果正確,而在加減運(yùn)算的時(shí)候就出現(xiàn)了問(wèn)題,如下: 假設(shè)字長(zhǎng)為8bits

    ( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 =  ( 0 )10

    (00000001) + (10000001) = (10000010) = ( -2 ) 顯然不正確.

     因?yàn)樵趦蓚€(gè)整數(shù)的加法運(yùn)算中是沒(méi)有問(wèn)題的,于是就發(fā)現(xiàn)問(wèn)題出現(xiàn)在帶符號(hào)位的負(fù)數(shù)身上,對(duì)除符號(hào)位外的其余各位逐位取反就產(chǎn)生了反碼.反碼的取值空間和原碼相同且一一對(duì)應(yīng). 下面是反碼的減法運(yùn)算:

     ( 1 )10 - ( 1 ) 10= ( 1 ) 10+ ( -1 ) 10=  ( 0 )10

     (00000001) + (11111110) = (11111111) = ( -0 ) 有問(wèn)題.

    ( 1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 =  ( -1 )10

    (00000001) + (11111101) = (11111110) = ( -1 ) 正確

    問(wèn)題出現(xiàn)在(+0)(-0),在人們的計(jì)算概念中零是沒(méi)有正負(fù)之分的.(印度人首先將零作為標(biāo)記并放入運(yùn)算之中,包含有零號(hào)的印度數(shù)學(xué)和十進(jìn)制計(jì)數(shù)對(duì)人類(lèi)文明的貢獻(xiàn)極大).

    于是就引入了補(bǔ)碼概念. 負(fù)數(shù)的補(bǔ)碼就是對(duì)反碼加一,而正數(shù)不變,正數(shù)的原碼反碼補(bǔ)碼是一樣的.在補(bǔ)碼中用(-128)代替了(-0),所以補(bǔ)碼的表示范圍為:

    (-128~0~127)256個(gè).

    注意:(-128)沒(méi)有相對(duì)應(yīng)的原碼和反碼, (-128) = (10000000) 補(bǔ)碼的加減運(yùn)算如下:

    ( 1 ) 10- ( 1 ) 10= ( 1 )10 + ( -1 )10 =  ( 0 )10

    (00000001)補(bǔ) + (11111111)補(bǔ) = (00000000)補(bǔ) = ( 0 ) 正確

    ( 1 ) 10- ( 2) 10= ( 1 )10 + ( -2 )10 =  ( -1 )10

    (00000001) 補(bǔ)+ (11111110) 補(bǔ)= (11111111)補(bǔ) = ( -1 ) 正確

       所以補(bǔ)碼的設(shè)計(jì)目的是:

         ⑴使符號(hào)位能與有效值部分一起參加運(yùn)算,從而簡(jiǎn)化運(yùn)算規(guī)則.

    ⑵使減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算,進(jìn)一步簡(jiǎn)化計(jì)算機(jī)中運(yùn)算器的線(xiàn)路設(shè)計(jì)

     所有這些轉(zhuǎn)換都是在計(jì)算機(jī)的最底層進(jìn)行的,而在我們使用的匯編、C等其他高級(jí)語(yǔ)言中使用的都是原碼。看了上面這些大家應(yīng)該對(duì)原碼、反碼、補(bǔ)碼有了新的認(rèn)識(shí)了吧!

    有網(wǎng)友對(duì)此做了進(jìn)一步的總結(jié):

    本人大致總結(jié)一下:

    1、在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來(lái)表示(存儲(chǔ))。

    主要原因:使用補(bǔ)碼,可以將符號(hào)位和其它位統(tǒng)一處理;同時(shí),減法也可按加法來(lái)處理。另外,兩個(gè)用補(bǔ)碼表示的數(shù)相加時(shí),如果最高位(符號(hào)位)有進(jìn)位,則進(jìn)位被舍棄。

    2、補(bǔ)碼與原碼的轉(zhuǎn)換過(guò)程幾乎是相同的。

    數(shù)值的補(bǔ)碼表示也分兩種情況:
    (1)正數(shù)的補(bǔ)碼:與原碼相同。
    例如,+9的補(bǔ)碼是00001001。
    (2)負(fù)數(shù)的補(bǔ)碼:符號(hào)位為1,其余位為該數(shù)絕對(duì)值的原碼按位取反;然后整個(gè)數(shù)加1。
    例如,-7的補(bǔ)碼:因?yàn)槭秦?fù)數(shù),則符號(hào)位為“1”,整個(gè)為10000111;其余7位為-7的絕對(duì)值+7的原碼0000111按位取反為1111000;再加1,所以-7的補(bǔ)碼是11111001


    已知一個(gè)數(shù)的補(bǔ)碼,求原碼的操作分兩種情況:
    (1)如果補(bǔ)碼的符號(hào)位為“0”,表示是一個(gè)正數(shù),所以補(bǔ)碼就是該數(shù)的原碼。
    (2)如果補(bǔ)碼的符號(hào)位為“1”,表示是一個(gè)負(fù)數(shù),求原碼的操作可以是:符號(hào)位為1,其余各位取反,然后再整個(gè)數(shù)加1。
    例如,已知一個(gè)補(bǔ)碼為11111001,則原碼是10000111(-7):因?yàn)榉?hào)位為“1”,表示是一個(gè)負(fù)數(shù),所以該位不變,仍為“1”;其余7位1111001取反后為0000110;再加1,所以是10000111

    在“閑扯原碼、反碼、補(bǔ)碼”文件中,沒(méi)有提到一個(gè)很重要的概念“”。我在這里稍微介紹一下“模”的概念:

    ”是指一個(gè)計(jì)量系統(tǒng)的計(jì)數(shù)范圍。如時(shí)鐘等。計(jì)算機(jī)也可以看成一個(gè)計(jì)量機(jī)器,它也有一個(gè)計(jì)量范圍,即都存在一個(gè)“模”。例如:

      時(shí)鐘的計(jì)量范圍是0~11,模=12。
      表示n位的計(jì)算機(jī)計(jì)量范圍是0~2(n)-1,模=2(n)。【注:n表示指數(shù)】


      “模”實(shí)質(zhì)上是計(jì)量器產(chǎn)生“溢出”的量,它的值在計(jì)量器上表示不出來(lái),計(jì)量器上只能表示出模的余數(shù)。任何有模的計(jì)量器,均可化減法為加法運(yùn)算。

    例如: 假設(shè)當(dāng)前時(shí)針指向10點(diǎn),而準(zhǔn)確時(shí)間是6點(diǎn),調(diào)整時(shí)間可有以下兩種撥法:

       一種是倒撥4小時(shí),即:10-4=6

       另一種是順撥8小時(shí):10+8=12+6=6

    在以12模的系統(tǒng)中,加8和減4效果是一樣的,因此凡是減4運(yùn)算,都可以用加8來(lái)代替。

    對(duì)“模”而言,8和4互為補(bǔ)數(shù)。實(shí)際上以12模的系統(tǒng)中,11和1,10和2,9和3,7和5,6和6都有這個(gè)特性。共同的特點(diǎn)是兩者相加等于模。

    對(duì)于計(jì)算機(jī),其概念和方法完全一樣。n位計(jì)算機(jī),設(shè)n=8, 所能表示的最大數(shù)是11111111,若再加1稱(chēng)為100000000(9位),但因只有8位,最高位1自然丟失。又回了00000000,所以8位二進(jìn)制系統(tǒng)的模為2(8)。 在這樣的系統(tǒng)中減法問(wèn)題也可以化成加法問(wèn)題,只需把減數(shù)用相應(yīng)的補(bǔ)數(shù)表示就可以了。

    把補(bǔ)數(shù)用到計(jì)算機(jī)對(duì)數(shù)的處理上,就是補(bǔ)碼

     

    posted on 2008-09-07 02:16 大石頭 閱讀(504) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 基礎(chǔ)

    主站蜘蛛池模板: 亚洲成人免费在线| 亚洲伊人久久综合中文成人网| 亚洲av无码一区二区乱子伦as| 一级大黄美女免费播放| 亚洲黄网在线观看| 国产自国产自愉自愉免费24区| 亚洲日本一区二区一本一道 | 亚洲精品WWW久久久久久| 最新精品亚洲成a人在线观看| 亚洲精品视频观看| 久久久久国色av免费看| 久久久久亚洲精品天堂| 免费播放美女一级毛片| 免费精品国产自产拍观看| 美景之屋4在线未删减免费| 亚洲国产高清精品线久久| 33333在线亚洲| 成年轻人网站色免费看| 亚洲成AV人片高潮喷水| 免费一级毛片在线播放| 国产免费内射又粗又爽密桃视频| 亚洲精品无码久久一线| 91成人免费观看| 国产亚洲高清不卡在线观看| 99免费视频观看| 亚洲一区电影在线观看| 国产黄色片在线免费观看| 一级做a爰片久久免费| 亚洲精品无码av人在线观看 | 无码乱人伦一区二区亚洲| 无码乱肉视频免费大全合集| 亚洲AV无码一区二区三区性色| 亚洲国产人成精品| 三年片在线观看免费大全电影| 亚洲乱码一区二区三区国产精品| 亚洲Av无码乱码在线观看性色| 久久午夜伦鲁片免费无码| 亚洲精品理论电影在线观看 | 亚洲国产成人精品无码区在线秒播 | 亚洲日韩国产精品第一页一区| 中文字幕免费在线观看|