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

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

            <2005年11月>
            303112345
            6789101112
            13141516171819
            20212223242526
            27282930123
            45678910

            常用鏈接

            留言簿(7)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            相冊

            編程資源

            不務正業

            找工作

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲国产精品高清久久久| 国产精品99久久久久久www| 久久毛片免费看一区二区三区| 亚洲天堂久久精品| 亚洲欧美日韩精品久久亚洲区| 亚洲精品国精品久久99热一| 国产成人精品久久一区二区三区 | 777久久精品一区二区三区无码 | 香港aa三级久久三级| 久久久久亚洲AV成人网人人网站| 久久久亚洲AV波多野结衣| 91精品国产综合久久四虎久久无码一级| 性做久久久久久久久久久| 韩国三级大全久久网站| 欧美牲交A欧牲交aⅴ久久 | 99久久人妻无码精品系列| 欧美伊人久久大香线蕉综合69| 精品久久人妻av中文字幕| 久久伊人五月天论坛| 九九99精品久久久久久| 亚洲精品tv久久久久久久久| 久久久精品久久久久久| 久久成人影院精品777| 久久精品国产网红主播| 久久精品国产亚洲AV影院| 亚洲欧洲久久av| 久久综合视频网站| 久久久久久久国产免费看| 999久久久无码国产精品| 久久综合88熟人妻| 精品久久久无码人妻中文字幕豆芽| 久久久久久免费视频| 2021国内精品久久久久久影院| 精品综合久久久久久97超人| 久久精品国产亚洲精品2020| 99久久精品国产一区二区 | 亚洲国产精品综合久久网络| 久久成人18免费网站| 久久久久久久综合综合狠狠| 久久久久亚洲AV无码专区网站| 久久精品国产一区二区电影|