美文网首页
Java位运算符

Java位运算符

作者: yimt | 来源:发表于2017-03-16 21:28 被阅读0次

    &与、|或、^异或、~取反、<<左移、>>右移、 >>>无符号右移

    &:有0则0####

    例:6&2
        6二进制:110
        2二进制:10
        110
        010
        010:结果
        6&2=2
    

    |:有1则1####

    例:6|2
        6二进制:110
        2二进制:10
        110
        010
        110:结果
        6&2=6
    

    ^:相同则0,不同则1####

    例:6^2
        6二进制:110
        2二进制:10
        110
        010
        100:结果
        6&2=4
    

    ~:按位取反####

    例:~6
        6二进制:110
        00000000 00000000 00000000 00000110
    取反11111111 11111111 11111111 11111001补码运算取原码
      - 00000000 00000000 00000000 00000001
     反码11111111 11111111 11111111 11111000
     原码10000000 00000000 00000000 00000111
        10000000 00000000 00000000 00000111=-7
    所以~6=-7
    

    <<:左边最高位丢弃,右边补齐0

    例:12<<1
            00000000 00000000 00000000 00001100
    左移(0)0000000 0000000 0000000 00011000
            0000000 0000000 0000000 00011000=24
            12<<1=24;
    

    >>:右移 最高位是0,左边补齐0;最高为是1,左边补齐1

    例:12>>1
            00000000 00000000 00000000 00001100
    右移     000000000 00000000 00000000 0000110(0)
             000000000 00000000 00000000 0000110=6
            12>>1=12;
    

    >>>:无符号右移 无论最高位是0还是1,左边补齐0

    例:12>>>1
            00000000 00000000 00000000 00001100
    右移     000000000 00000000 00000000 0000110(0)
             000000000 00000000 00000000 0000110=6
            12>>>1=12;
       -12>>>1
        原码10000000 00000000 00000000 00001100
        反码11111111 11111111 11111111 11110011
        补码11111111 11111111 11111111 11110100
    无符号右移01111111 11111111 11111111 11111010(0)
        01111111 11111111 11111111 11111010=2147483642
        -12>>>1=2147483642
    

    原码、反码、补码:http://www.jianshu.com/p/a22d08bf525f

    相关文章

      网友评论

          本文标题:Java位运算符

          本文链接:https://www.haomeiwen.com/subject/bjhsnttx.html