posts - 56,  comments - 12,  trackbacks - 0

          移位運算符

              包括:
              “>> 右移”;“<< 左移”;“>>> 無符號右移”

          例子:
          -5>>3=-1
          1111 1111 1111 1111 1111 1111 1111 1011
          1111 1111 1111 1111 1111 1111 1111 1111
          其結果與 Math.floor((double)-5/(2*2*2)) 完全相同。

          -5<<3=-40
          1111 1111 1111 1111 1111 1111 1111 1011
          1111 1111 1111 1111 1111 1111 1101 1000
          其結果與 -5*2*2*2 完全相同。

          5>>3=0
          0000 0000 0000 0000 0000 0000 0000 0101
          0000 0000 0000 0000 0000 0000 0000 0000
          其結果與 5/(2*2*2) 完全相同。

          5<<3=40
          0000 0000 0000 0000 0000 0000 0000 0101
          0000 0000 0000 0000 0000 0000 0010 1000
          其結果與 5*2*2*2 完全相同。

          -5>>>3=536870911     
          1111 1111 1111 1111 1111 1111 1111 1011
          0001 1111 1111 1111 1111 1111 1111 1111

          無論正數、負數,它們的右移、左移、無符號右移 32 位都是其本身,比如 -5<<32=-5、-5>>32=-5、-5>>>32=-5。
          一個有趣的現象是,把 1 左移 31 位再右移 31 位,其結果為 -1。
          0000 0000 0000 0000 0000 0000 0000 0001
          1000 0000 0000 0000 0000 0000 0000 0000
          1111 1111 1111 1111 1111 1111 1111 1111


          位邏輯運算符

              包括:
              & 與;| 或;~ 非(也叫做求反);^ 異或

              “& 與”、“| 或”、“~ 非”是基本邏輯運算,由此可以演變出“與非”、“或非”、“與或非”復合邏輯運算。“^ 異或”是一種特殊的邏輯運算,對它求反可以得到“同或”,所以“同或”邏輯也叫“異或非”邏輯。

          例子:
          5&3=1
          0000 0000 0000 0000 0000 0000 0000 0101
          0000 0000 0000 0000 0000 0000 0000 0011
          0000 0000 0000 0000 0000 0000 0000 0001

          -5&3=1
          1111 1111 1111 1111 1111 1111 1111 1011
          0000 0000 0000 0000 0000 0000 0000 0011
          0000 0000 0000 0000 0000 0000 0000 0011

          5|3=7
          0000 0000 0000 0000 0000 0000 0000 0101
          0000 0000 0000 0000 0000 0000 0000 0011
          0000 0000 0000 0000 0000 0000 0000 0111

          -5|3=-5
          1111 1111 1111 1111 1111 1111 1111 1011
          0000 0000 0000 0000 0000 0000 0000 0011
          1111 1111 1111 1111 1111 1111 1111 1011

          ~5=-6
          0000 0000 0000 0000 0000 0000 0000 0101
          1111 1111 1111 1111 1111 1111 1111 1010

          ~-5=4
          1111 1111 1111 1111 1111 1111 1111 1011
          0000 0000 0000 0000 0000 0000 0000 0100

          5^3=6
          0000 0000 0000 0000 0000 0000 0000 0101
          0000 0000 0000 0000 0000 0000 0000 0011
          0000 0000 0000 0000 0000 0000 0000 0110

          -5^3=-8
          1111 1111 1111 1111 1111 1111 1111 1011
          0000 0000 0000 0000 0000 0000 0000 0011
          1111 1111 1111 1111 1111 1111 1111 1000
          posted on 2007-06-16 18:13 苦笑枯 閱讀(3051) 評論(1)  編輯  收藏 所屬分類: Java

          FeedBack:
          # re: Java 位運算[未登錄]
          2009-05-14 16:45 | lepoke
          學到了。呵呵。。。  回復  更多評論
            
          收藏來自互聯網,僅供學習。若有侵權,請與我聯系!

          <2009年5月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(2)

          隨筆分類(56)

          隨筆檔案(56)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 龙海市| 哈巴河县| 韶山市| 台中市| 湟中县| 西安市| 井陉县| 长顺县| 阜新| 德格县| 邳州市| 西平县| 舒城县| 长葛市| 云安县| 蕉岭县| 黑水县| 台江县| 辰溪县| 龙山县| 虎林市| 特克斯县| 涟源市| 会昌县| 迁安市| 永顺县| 九龙城区| 三穗县| 门源| 兴城市| 通海县| 海兴县| 横峰县| 马尔康县| 县级市| 交城县| 安远县| 镇远县| 长武县| 福海县| 特克斯县|