• <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>
            posts - 19,  comments - 21,  trackbacks - 0

              昨天去參加筆試,遇到了一題考計算機里存放的數據都是以原碼、反碼、還是補碼的形式存放的。我還真的很久沒有考慮過原碼補碼的問題了,不過憑他考這個問題,我可以猜出答案一定是補碼了。雖然答案知道了,但是還真不知道還有這么一說,所以回來在網上搜了一篇這樣的文章,才算是弄清楚是怎么一回事了:


                數值有正負之分
            ,計算機就用一個數的最高位存放符號(0為正,1為負).這就是機器數的原碼了.假設機器能處理的位數為8.即字長為1byte,原碼能表示數值的范圍為

            (-127~-0 +0~127)256.

              有了數值的表示方法就可以對數進行算術運算.但是很快就發現用帶符號位的原碼進行乘除運算時結果正確,而在加減運算的時候就出現了問題,如下: 假設字長為8bits

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

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

              因為在兩個整數的加法運算中是沒有問題的,于是就發現問題出現在帶符號位的負數身上,對除符號位外的其余各位逐位取反就產生了反碼.反碼的取值空間和原碼相同且一一對應. 下面是反碼的減法運算:

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

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

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

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

            問題出現在(+0)(-0),在人們的計算概念中零是沒有正負之分的.(印度人首先將零作為標記并放入運算之中,包含有零號的印度數學和十進制計數對人類文明的貢獻極大).

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

            (-128~0~127)256.

            注意:(-128)沒有相對應的原碼和反碼, (-128) = (10000000)  補碼的加減運算如下:

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

            (00000001) + (11111111) =  (00000000) = ( 0 ) 正確

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

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

               所以補碼的設計目的是:

                 ⑴使符號位能與有效值部分一起參加運算,從而簡化運算規則.

            ⑵使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計

              所有這些轉換都是在計算機的最底層進行的,而在我們使用的匯編、C等其他高級語言中使用的都是原碼。看了上面這些大家應該對原碼、反碼、補碼有了新的認識了吧!


            下面總結一下:
            1。正數的原碼反碼補碼都相同,負數的反碼是除符號位為1外,其他位全取反;補碼就是反碼+1
            2。(10000000)規定為-128
            3。計算機中的數據是以補碼形式存儲的

            posted on 2005-12-09 19:32 halCode 閱讀(7055) 評論(2)  編輯 收藏 引用 所屬分類: 算法/數據結構

            FeedBack:
            # re: 原碼、反碼、補碼
            2006-10-24 10:16 | 吳海波
            例如,十進制數0.365怎么表示他的原碼,反碼,補碼  回復  更多評論
              

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(7)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            相冊

            編程資源

            不務正業

            找工作

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            9999国产精品欧美久久久久久| 久久精品中文字幕大胸| 国产成人久久精品区一区二区| 国产精品久久波多野结衣| 久久久久久久综合日本亚洲| 久久久久九九精品影院| 日韩人妻无码一区二区三区久久| 久久99精品国产自在现线小黄鸭| 777久久精品一区二区三区无码| 久久久久国产精品嫩草影院| 少妇高潮惨叫久久久久久| 青青草国产精品久久久久| 久久精品日日躁夜夜躁欧美| 久久亚洲高清观看| 人妻无码中文久久久久专区| 久久国产成人午夜aⅴ影院| 亚洲AV乱码久久精品蜜桃| 久久久精品国产亚洲成人满18免费网站 | 成人亚洲欧美久久久久| 东方aⅴ免费观看久久av| 欧美粉嫩小泬久久久久久久| 激情伊人五月天久久综合| 久久国产亚洲精品| 久久精品成人一区二区三区| 99久久久精品| 久久精品国产亚洲AV电影| 久久青青色综合| 一本色道久久综合狠狠躁篇| 久久精品成人影院| 久久成人国产精品一区二区| 99精品久久久久久久婷婷| 97精品国产91久久久久久| 亚洲精品无码久久久久去q | 99久久国产免费福利| 99久久精品日本一区二区免费| 超级97碰碰碰碰久久久久最新| 久久精品国产国产精品四凭| 久久国产成人亚洲精品影院| 精品久久久久久国产免费了| 亚洲国产精品久久久久| 国产福利电影一区二区三区久久久久成人精品综合 |