Java海闊天空

          編程是我的生活,但生活不僅僅是編程。

          二進制最簡單的運算過程解析


          3 & 4

          &:同為1結果為1,否則為0
          0000 0000 0000 0000 0000 0000 0000 0011
          0000 0000 0000 0000 0000 0000 0000 0100
          ---------------------------------------
          0000 0000 0000 0000 0000 0000 0000 0000 -> 0

          4 | 8
          |: 一方為1結果便為1,否則為0
          0000 0000 0000 0000 0000 0000 0000 0100
          0000 0000 0000 0000 0000 0000 0000 1000
          ---------------------------------------
          0000 0000 0000 0000 0000 0000 0000 1100 -> 12


          ~9
          ~:取反,0變成1,1變成0 ->要得到最后結果必須再計算補碼(反碼+1)
          0000 0000 0000 0000 0000 0000 0000 1001
          ---------------------------------------
          1111 1111 1111 1111 1111 1111 1111 0110 ->得到反碼,下面回算補碼(即減1取反)
          ---------------------------------------
          1111 1111 1111 1111 1111 1111 1111 0101 ->-1
          ---------------------------------------
          0000 0000 0000 0000 0000 0000 0000 1010 ->取反結果為10,取反碼的時候以1開頭,即為負數(shù),所以結果為-10

          下面是-10在java中的表示:
          0000 0000 0000 0000 0000 0000 0000 1010
          1111 1111 1111 1111 1111 1111 1111 0101 +1
          1111 1111 1111 1111 1111 1111 1111 0110

          8 ^ 23
          ^:異或, 不同為1,相同為0
          0000 0000 0000 0000 0000 0000 0000 1000
          0000 0000 0000 0000 0000 0000 0001 0111
          ---------------------------------------
          0000 0000 0000 0000 0000 0000 0001 1111 -> 31

          4 << 3
          <<:左位移,4的二進制向左移動3位,右邊補0
          0000 0000 0000 0000 0000 0000 0000 0100
          ---------------------------------------
          0000 0000 0000 0000 0000 0000 0010 0000 -> 32

          5 >> 9
          >>:右位移, 5的二進制向右移動9位,左邊補0
          0000 0000 0000 0000 0000 0000 0000 0101
          ---------------------------------------
          0000 0000 0000 0000 0000 0000 0000 0000 -> 0

           

          posted on 2010-01-29 17:35 李贊紅 閱讀(2101) 評論(3)  編輯  收藏

          評論

          # re: 二進制最簡單的運算過程解析 2010-01-30 09:19 Ge,Kunjin

          沒怎么接觸過二進制的計算,關于您的這個講解我沒有看明白?

          ~9
          ~:取反,0變成1,1變成0 ->要得到最后結果必須再計算補碼(反碼+1)
          0000 0000 0000 0000 0000 0000 0000 1001 -->9的二進制
          ---------------------------------------
          1111 1111 1111 1111 1111 1111 1111 0110 ->得到反碼,下面回算補碼(即減1取反)
          ---------------------------------------
          1111 1111 1111 1111 1111 1111 1111 0101 ->-1
          ---------------------------------------
          0000 0000 0000 0000 0000 0000 0000 1010 ->取反結果為10,取反碼的時候以1開頭,即為負數(shù),所以結果為-10

          你上面提到的“要得到最后結果必須再計算補碼(反碼+1)
          ”與“->得到反碼,下面回算補碼(即減1取反)
          ”矛盾嗎?請指教!
            回復  更多評論   

          # re: 二進制最簡單的運算過程解析 2010-01-30 10:23 李贊紅

          @Ge,Kunjin
          建議你去看看與二進制相關的資料.  回復  更多評論   

          # re: 二進制最簡單的運算過程解析 2010-01-30 11:42 咖啡妝

          混亂!!!不知道你要說啥?  回復  更多評論   


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


          網(wǎng)站導航:
           

          導航

          <2010年1月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          統(tǒng)計

          常用鏈接

          留言簿(12)

          隨筆檔案(28)

          相冊

          技術友情博客

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 大冶市| 延安市| 杨浦区| 秀山| 揭西县| 鄂温| 徐水县| 偏关县| 通州市| 太原市| 裕民县| 镇坪县| 巴里| 青铜峡市| 富蕴县| 荣成市| 宁都县| 留坝县| 安庆市| 平南县| 多伦县| 莆田市| 嘉黎县| 霍林郭勒市| 新疆| 山东| 丽水市| 连城县| 贵定县| 陇川县| 西盟| 和龙市| 湘潭市| 灵山县| 西昌市| 鱼台县| 深圳市| 泰安市| 盖州市| 屯门区| 淮阳县|