<2008年2月>
          272829303112
          3456789
          10111213141516
          17181920212223
          2425262728291
          2345678

          統計

          • 隨筆 - 18
          • 文章 - 1
          • 評論 - 2
          • 引用 - 0

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          原碼,反碼,和補碼

          在java中一個字節由8個二進位組成。

          計算機中有原碼,反碼,和補碼。

          原碼

          將最高為作為符號位0正,1負。其余各位表示數值的絕對值。

          +7的原碼是 00000111

          -7的原碼是 10000111

          原碼的問題是+0和-0的表示

          +0是00000000

          -0是 10000000

          2個數值不同。

          反碼

          一個數如果為正,則它的反碼與原碼相同,如果為負,則符號位為1,其余取反。

          +7是00000111

          -7 是 11111000

          反碼的問題也是+0和-0的問題

          +0是 00000000

          -0 是 11111111

          2個數值不同。

          補碼

          利用溢出,我們將減法變成加法。 一個數如十進制,一個字節一個數,有8位,超過就進一。

          一個數為正,則它的原碼,反碼,補碼相同。如果為負,則符號位為1,其余對原碼取反。然后加1

          +7是 00000111

          -7是 11111001

          +0是00000000

          -0是100000000,然后丟掉最高的9位則為00000000

          和+0的表示相同,所以計算機中是采用的是補碼。

          已知一個負數的補碼,轉換為十進制。

          1. 先對各位取反。
          2. 將其轉換為十進制數
          3. 加上負號,再減去1.

          如 11111010 先取反

          00000101 轉換為十進制

          是5 加上負號

          是-5 再減去1

          是-6

          posted on 2008-02-28 15:02 rick 閱讀(443) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 全南县| 丰顺县| 密云县| 上虞市| 敖汉旗| 渭源县| 成都市| 壶关县| 张家界市| 出国| 株洲市| 江孜县| 新竹市| 通化市| 蒙城县| 宁都县| 溆浦县| 修武县| 施秉县| 岳阳县| 潼关县| 重庆市| 遵义县| 饶平县| 仪征市| 玉龙| 武安市| 灵石县| 扎鲁特旗| 廉江市| 濮阳县| 台东县| 武陟县| 靖州| 荆门市| 青河县| 仙居县| 濮阳市| 日喀则市| 文水县| 靖安县|