美文网首页
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

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

相关文章

  • C、数据结构知识点

    1. 位运算符有: &(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。 其中,按位取反运算符是单目运算...

  • 高级运算符

    1:位运算 1.1:按位取反运算符(~) 例子 1.2:按位与运算符 例子 1.3:按位或运算符 例子 1.4:按...

  • java 按位取反运算符 ~

    从一个简单的例子看: out: 感觉 x = ~x;的结果是 -x-1 运算过程:java int 是两个字节的...

  • 高级运算符(Advanced Operators)

    目录 [toc] 位运算符 1. 按位取反运算符~ 2. 按位与运算符& 3. 按位或运算符| 4. 按位异或运算...

  • 位运算符

    按位运算符有6个 & 按位与| 按位或^按位异或~取反>>右移<<左移 1 、& 运算符 &是二元运算符,它以特定...

  • 集合、多线程、事件模型

    JVM内存 运算符 & 按位与 | 按位或 ~ 取反 ^ 异或 多线程实现方式 Java多线程实现方式主要有四种:...

  • 强大的位运算符

    位取反运算符 位取反运算符(~)是对所有位的数字进行取反操作位取反运算符.png 位与运算符 位与运算符(&)可以...

  • C语言位运算符及常见用法

    一、位运算符C语言提供了六种位运算符:# & 按位与| 按位或^ 按位异或~ 取反<< 左移 >>右移 ...

  • js 中位运算的应用

    按位运算符有6个: 按位与 & 按位或 | 按位异或 ^ 取反 ~ 右移 >> 左移 << 应用...

  • MySQL运算符的优先级

    优先级 运算符(最高) !-(负号),~(按位取反)^(按位异或)*,/(DIV),%(MOD)+,->>,<<...

网友评论

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

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