• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            luqingfei@C++

            為中華之崛起而崛起!
            兼聽則明,偏聽則暗。

            匯編語(yǔ)言--補(bǔ)碼

             

            以8位的數(shù)據(jù)為例,對(duì)于無(wú)符號(hào)數(shù)來(lái)說(shuō)是從00000000b~11111111b到0~255一一對(duì)應(yīng)的。那么我們?nèi)绾螌?duì)有符號(hào)數(shù)進(jìn)行編碼嗎?即我們?nèi)绾斡?位數(shù)據(jù)表示有符號(hào)數(shù)呢?

             

            既然表示的數(shù)有符號(hào),則必須要能夠區(qū)分正、負(fù)。

             

            首先,我們可以考慮用8位數(shù)據(jù)的最高位來(lái)表示符號(hào),1表示負(fù),0表示正,而用其他位表示數(shù)值,如下:

            00000000b

            0

            00000001b

            1

            00000010b

            2

            01111111b

            127

            10000000b

            ???

            10000001b

            -1

            10000010b

            -2

            11111111b

            -127

             

            可見,用上面的表示方式,8位數(shù)據(jù)可以表示-127~127的254個(gè)有符號(hào)數(shù)。從這里我們看出一些問題(注意問號(hào)處),8位數(shù)據(jù)可以表示255種不同的信息,也就是說(shuō)應(yīng)該可以表示255個(gè)有符號(hào)數(shù),可用上面的方法,只能表示254個(gè)有符號(hào)數(shù)。注意,用上面的方法,00000000b和10000000b都表示0,一個(gè)是0,一個(gè)是-0,當(dāng)然不可能有-0。可以看出,這種表示有符號(hào)數(shù)的方法是有問題的,它并不能正確地表示有符號(hào)數(shù)。

             

            我們?cè)倏紤]用反碼來(lái)表示,這種思想是,我們先確定用00000000b~01111111b表示0~127,然后再用它們按位取反后的數(shù)據(jù)表示負(fù)數(shù)。如下:

            00000000b

            0

             

            11111111b

            ???

            00000001b

            1

             

            11111110b

            -1

            00000010b

            2

             

            11111101b

            -2

            01111111b

            127

             

            10000000b

            -127

             

            可以看出,用反碼表示有符號(hào)數(shù)存在同樣的問題,0出現(xiàn)重碼(注意問號(hào)處)。

             

             

            為了解決這種問題,采用一種稱為補(bǔ)碼的編碼方法。這種思想是:先確定用00000000b~01111111b表示0~127,然后再用它們按位取反加1后的數(shù)據(jù)表示負(fù)數(shù)。如下:

            00000000b

            0

             

            11111111b + 1 =00000000b

            0

            00000001b

            1

             

            11111110b + 1 =11111111b

            -1

            00000010b

            2

             

            11111101b + 1 =11111110b

            -2

            01111111b

            127

             

            10000000b + 1 =10000001b

            -127

            觀察上面的數(shù)據(jù),我們可以發(fā)現(xiàn),補(bǔ)碼方案中:

            1)最高位為1,表示負(fù)數(shù);

            2)正數(shù)的補(bǔ)碼取反加1后,為其對(duì)應(yīng)的負(fù)數(shù)的補(bǔ)碼:負(fù)數(shù)的補(bǔ)碼取反加1后,為其絕對(duì)值,比如:

            1的補(bǔ)碼為:00000001b,取反加1后為:11111111b,表示-1;

            -1的補(bǔ)碼為:11111111b,取反加1后為:00000001,其絕對(duì)值為1。

             

            我們從一個(gè)負(fù)數(shù)的補(bǔ)碼不太容易看出它所表示的數(shù)據(jù),比如:11010101b表示的數(shù)據(jù)是多少?

             

            但是我們利用補(bǔ)碼的特性,將11010101b取反加1后為:00101011b,可以知11010101b表示的負(fù)數(shù)的絕對(duì)值為:2BH,則11010101b表示的負(fù)數(shù)為-2BH。

             

            那么-20的補(bǔ)碼是多少呢?

            用補(bǔ)碼的特性,-20的絕對(duì)值是20,00010100b,將其取反加1后為:11101100b。可知-20H的補(bǔ)碼為:1101100b。

             

            那么10000000b表示多少呢?

            10000000b取反加1后為:10000000b,其大小為128,所以10000000b表示-128。

             

            8位補(bǔ)碼所表示的數(shù)的范圍:-128~127。

             

            補(bǔ)碼為有符號(hào)數(shù)的運(yùn)算提供了方便,運(yùn)算后的結(jié)果依舊滿足補(bǔ)碼規(guī)則。

            比如:

             

            計(jì)算

            補(bǔ)碼表示

             

            10

            00001010b

             

            +(-20)

            11101100b

            結(jié)果

            -10

            11110110b

             

             

             

            計(jì)算

            補(bǔ)碼表示

             

            10

            00001010b

             

            +(-128)

            10000000b

            結(jié)果

            -118

            10001010b

             

             

            posted on 2010-08-05 09:52 luqingfei 閱讀(2380) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 匯編語(yǔ)言基礎(chǔ)學(xué)習(xí)

            導(dǎo)航

            <2010年8月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            統(tǒng)計(jì)

            留言簿(6)

            隨筆分類(109)

            隨筆檔案(105)

            Blogers

            Game

            Life

            NodeJs

            Python

            Useful Webs

            大牛

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久久久国产亚洲AV麻豆| 欧美日韩精品久久久久| 久久发布国产伦子伦精品| 漂亮人妻被中出中文字幕久久| 久久久精品久久久久久| 亚洲人成无码久久电影网站| 久久午夜无码鲁丝片午夜精品| 久久亚洲AV无码精品色午夜麻豆| 狼狼综合久久久久综合网| 久久国产香蕉视频| 久久精品国产亚洲精品2020| 久久男人AV资源网站| 久久精品免费大片国产大片| 久久九九久精品国产| 久久国产成人精品麻豆| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 色播久久人人爽人人爽人人片AV| 天堂久久天堂AV色综合| 人人狠狠综合88综合久久| 久久国产精品久久| 久久久噜噜噜久久熟女AA片| 伊人久久大香线蕉成人| 久久精品这里只有精99品| 91精品国产高清久久久久久国产嫩草| 色综合久久久久综合体桃花网| 一本久久精品一区二区| 无码任你躁久久久久久久| 久久久久国色AV免费看图片| 青青草国产精品久久| 99久久精品国产综合一区| 精品国产一区二区三区久久| 97久久超碰成人精品网站| 国产一久久香蕉国产线看观看| 亚洲成人精品久久| 成人午夜精品久久久久久久小说| 久久久久久毛片免费看| 久久综合给久久狠狠97色| 亚洲欧洲久久久精品| 久久久精品免费国产四虎| 香蕉久久夜色精品升级完成| 99久久精品免费观看国产|