位运算

1.原码、反码、 补码
正数的原码、反码、 补码都一样 正数以原码存储在计算机
负数 以补码存储在计算机

例:17 原码、反码、补码 都是 0001 0001
-15在计算机中存储是补码11110001
原码:1000 1111
反码:1111 0000
补码:1111 0001

2.取反 NOT ( ~ )
一元运算符 二进制各位是数字1成为0 0成为1

3.按位或 OR ( | )
两个二进制数,只要有1该位计算后值为1

    1011 0010
    0001 1010
OR |-----------
    1011 1010

4.按位与AND ( & )
都是1 才为1否则是0

      1001 1101
      0111 1000
AND &-----------
      0001 1000

5.按位异或XOR ( ^ )
不相同为1 相同为0

        1010 1110                         
        1001 1010                         
XOR ^ --------------
        0011 0100  

**6.左移<< **
汇编左移符号 shl
用来将一个数各二进制位全部向左移动若干位。高位丢弃 低位补0

    0001 0110                               0001 0110      //22
<<1----------                          <<2-------------
    0010 1100                               0101 1000     //88

注意,观察可以发现,左移一位的结果就是原值乘2,左移两位的结果就是原值乘4

**6.右移>> **
汇编右移符号 sar高位补1 shr 高位补0
用来将一个数各二进制位全部向左移动若干位。高位补0或符号位 低位丢弃

        0110 1010           0110 1010      //
>>2 sar ----------     shr ----------
        0001 1010           1101 1010

注意,观察可以发现,右移一位的结果就是原值除2,右移两位的结果就是原值除4,取整

你可能感兴趣的:(位运算)