• <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)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            相冊

            編程資源

            不務正業

            找工作

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            精品九九久久国内精品| 久久久亚洲精品蜜桃臀| 亚洲中文字幕无码久久精品1 | 久久夜色精品国产亚洲| 久久久91精品国产一区二区三区| 99久久精品国产一区二区| 久久人人爽人人爽人人片AV麻豆| 精品久久人人爽天天玩人人妻| 久久久一本精品99久久精品66| 精品国产综合区久久久久久| 午夜精品久久久久久毛片| 亚洲乱亚洲乱淫久久| 色综合久久久久久久久五月| 久久人人爽人人爽人人片AV麻豆 | 国产亚州精品女人久久久久久| 久久久久亚洲av成人无码电影| 久久九九精品99国产精品| 久久亚洲天堂| 成人亚洲欧美久久久久| 久久久久亚洲精品天堂| 久久人人爽人人爽人人av东京热| 国产精品欧美久久久久无广告| 久久精品国产99久久久| 亚洲精品乱码久久久久久蜜桃不卡 | 久久国产色AV免费看| 久久精品国产2020| 亚洲国产精品无码久久青草| 99精品久久久久久久婷婷| 91久久精品91久久性色| 久久免费的精品国产V∧| 中文字幕无码精品亚洲资源网久久| 精品国产综合区久久久久久| 亚洲成人精品久久| 亚洲国产精品久久66| 久久九九全国免费| 国产精品午夜久久| 国产激情久久久久影院| 久久久精品久久久久特色影视| 99精品久久久久久久婷婷| 精品久久久久久久久久中文字幕| 久久精品这里热有精品|