• <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 閱讀(7066) 評論(2)  編輯 收藏 引用 所屬分類: 算法/數據結構

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

            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(7)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            相冊

            編程資源

            不務正業

            找工作

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久国产影院| 一本一本久久a久久综合精品蜜桃 一本一道久久综合狠狠老 | 蜜桃麻豆WWW久久囤产精品| 久久久久99这里有精品10| 久久久精品国产sm调教网站| 欧美伊香蕉久久综合类网站| 久久国产劲爆AV内射—百度| 亚洲国产精品久久久久久| 精品久久亚洲中文无码| 久久久不卡国产精品一区二区| 99久久99久久精品国产片果冻 | 久久人与动人物a级毛片| 久久综合狠狠色综合伊人| 久久午夜夜伦鲁鲁片免费无码影视| 久久精品国产91久久综合麻豆自制| 亚洲伊人久久成综合人影院 | 成人久久免费网站| 精品久久人人爽天天玩人人妻| 久久精品国产99久久久| 99久久国产亚洲综合精品| 久久伊人中文无码| 久久久久国产一区二区| 久久线看观看精品香蕉国产| 久久久久久国产精品无码超碰| 一级女性全黄久久生活片免费 | 99久久精品国产一区二区三区 | 99久久国语露脸精品国产| 午夜精品久久久久久久久| 久久精品国产清自在天天线| 亚洲综合久久夜AV | 一本久久免费视频| 欧美日韩久久中文字幕| 2019久久久高清456| 久久久久久久久久久久久久 | 7777久久亚洲中文字幕| 久久发布国产伦子伦精品| 久久99精品久久久久久动态图| 人妻丰满AV无码久久不卡| 国产激情久久久久久熟女老人 | 日韩人妻无码一区二区三区久久| 亚洲中文字幕久久精品无码APP|