二进制中的与、或、非、异或运算

289 阅读1分钟

1、与运算

【与】运算符号为 & ,运算法则为遇0得0。也就是说只要有0,结果即为0

举例:1001 & 1100    

    1 0 0 1  
      &  
    1 1 0 0  
    ————  
    1 0 0 0

满足交换律和结合律。

2、或运算

【或】运算符号为 | ,就是一个竖线,运算法则为遇1得1。也就是说,只要有1,结果就为1。

举例:1100 | 1010   

1 1 0 0  
       |  
    1 0 1 0  
    ————  
    1 1 1 0
  1. 一个数或0还是这个数。
  2. 满足结合律和交换律。
( a | b ) | c = a | ( b | c)
a | b = b | a

3、非运算

【非】预算符号为 ~,就是一个波浪线,运算法则为按位取反,也就是遇1取0,遇0取1,即 ~1 = 0 , ~0 = 1;

举例:1001 & 1001

  

1 0 1 1  
        ~  
    ————  
    0 1 0 0

4、异或运算

异或】运算符号为 ^,就是一个乘方符号,运算法则为相同取0,不同取1。异或运算,关键在异上面,异为1,否则为0。

举例:1001 & 1001

    1 0 1 1  
      ^  
    1 0 0 1  
    ————  
    0 0 1 0

1.任何数异或0是它本身。 a ^ 0 = a

2.两个相同的数异或为0。

3.异或满足结合律交换律:

a ^ (b ^ c) = (a ^ b) ^ c
a ^ b = b ^ a

5、分配律

a & ( b | c ) = ( a & b ) | ( a & c )  
a ^ ( b | c ) = ( a ^ b) | (a ^ c)

参考文章