原码、补码 、反码 的理解 (8个重点) 和java的7个位运算

  • 原码、补码 、反码 的理解
  1. 二进制的最高符号位:0表示正数,1表示负数(符号为是第一为,高位是左边的数,低位是右边的数)。
  2. 正数的原码 、反码 、补码一样(三码和一)。
  3. 负数的原码 = 它的原码符号位不变,其他取反。
  4. 负数的补码 = 它的反码 + 1 ,负数的反码 = 负数的补码 - 1。
  5. 0的反码和补码都是0。
  6. java没有符号数,换言之,java的数都是有符号的。
  7. 在计算机运算的时候,都是以补码的方式运算的
  8. 当我们看运算结果的时候要看它的原码
  • java的7个位运算:(&、|、^、~、>>、<<和 >>>
  1. 按位与 & :两位全为1,结果才为1,否则为0。

    1. 例如:10010001 & 11100101 = 10000001  
  2. 按位或 |:两位有一个为1,结果为1,否则为0;
  3. 按位异  ^  :两位有一个为0   一个为1 ,结果为1,否则为0
  4. 按位取反 ~:0变1,1变0
  5. 算数右移 >>:低位溢出,符号不变,并用符号位补溢出的最高位
  6. 算数左移 << :   符号位补不变低位补0
  7. >>> 逻辑右移:无符号位补溢出高位,逻辑右移就是不考虑符号位,右移一位,左边补零即可。
    1.   说明:没有逻辑左移
  • 练习
  1. 2 & 3 = 2  思路:先得到2的原码正数的原码 、反码 、补码一样(三码和一)= 00000010   3的原码00000011。    00000010 & 00000011 = 00000010 。             00000010再把这个原码转换成十进制就是2。    2  & 3 = 2。
posted @ 2022-02-11 20:50  平凡晨  阅读(204)  评论(0)    收藏  举报