常用鏈接

          統計

          最新評論

          Java 中的位運算 (轉)

          移位運算符

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

          例子:
          -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



          請注意!引用、轉貼本文應注明原作者:Rosen Jiang 以及出處:http://www.aygfsteel.com/rosen

          posted on 2008-01-08 09:56 九寶 閱讀(188) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 栾城县| 澄迈县| 河津市| 南部县| 通许县| 寿阳县| 安顺市| 永清县| 定南县| 云梦县| 巍山| 巨鹿县| 五原县| 禹城市| 柳江县| 卓尼县| 仪陇县| 随州市| 法库县| 额尔古纳市| 湘潭市| 冷水江市| 莒南县| 肃宁县| 靖远县| 浏阳市| 阿拉善右旗| 阿瓦提县| 梅州市| 肃宁县| 惠州市| 昌吉市| 漳浦县| 延长县| 涡阳县| 平度市| 常德市| 巴东县| 渝中区| 柳江县| 义马市|