美文网首页
java 按位取反运算符 ~

java 按位取反运算符 ~

作者: steamed_bun | 来源:发表于2017-12-08 16:30 被阅读0次

    从一个简单的例子看:

        int a = 10;
        a = ~a;
        System.out.println(a);
    
        int b = -10;
        b = ~b;
        System.out.println(b);
    

    out:

        -11
        9
    

    感觉 x = ~x;的结果是 -x-1

    运算过程
    java int 是两个字节的,所以如下表:

    第一波~

    过程说明 二进制 结果
    10的原码、反码、补码一致 0000 0000 0000 0000 0000 0000 0000 1010 10
    ~10 按位取反 1111  1111  1111  1111 1111  1111  1111  0101
    赋值的时候,二进制首位是1,
    所以将其当做负数来处理,即
    将上一步的二进制当做补码处
    理,需要恢复原码,在来一波
    按位取反,末尾加一
    1000 0000 0000 0000 0000 0000 0000 1011 -11

    又一波~

    过程说明 二进制 结果
    -10的补码 1111  1111  1111  1111 1111  1111   1111 0110 -10
    ~(-10) 按位取反 0000 0000 0000 0000 0000 0000 0000 1001 9
    赋值的时候,二进制首位是0,
    所以将其当做正数来处理,而
    正数的补码与原码一致,不用
    处理
    0000 0000 0000 0000 0000 0000 0000 1001 9

    注意点:数据在存储的时候,以其补码为准

    相关文章

      网友评论

          本文标题:java 按位取反运算符 ~

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