按位与、或、异或等运算方法

按位与运算符(&)

参加运算的两个数据,按二进制位进行“与”运算,负数按补码形式参加按位与运算

运算规则

1
2
3
4
0 & 0 = 0  
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1

例子

1
2
3
3 & 5  
0011 & 0101 = 0001
因此 3 & 5 的值得 1

特殊用途

  • 清零(如果想将一个单元清零,即使其全部二进制位为 0 ,只要与一个各位都为零的数值相与,结果为零)
  • 取一个数中指定位

例:设 X = 10101110,取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到

按位或运算符(|)

参加运算的两个对象,按二进制位进行“或”运算,负数按补码形式参加按位或运算

运算规则

1
2
3
4
0 | 0 = 0  
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1

例子

1
2
3
3 | 5  
0011 | 0101 = 0111
因此 3 | 5 的值得 7

特殊用途

  • 对一个数据的某些位置 1

例:将 X = 10100000 的低 4 位置 1 ,用 X | 0000 1111 = 1010 1111 即可得到

异或运算符(^)

参加运算的两个数据,按二进制位进行“异或”运算

运算规则:

1
2
3
4
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0

特殊用途

  • 使特定位翻转找一个数,对应 X 要翻转的各位,该数的对应位为 1,其余位为 0,此数与 X 对应位异或即可

例:X = 10101110,使 X 低 4 位翻转,用X ^ 0000 1111 = 1010 0001即可得到

取反运算符(~)

参加运算的一个数据,按二进制位进行“取反”运算

运算规则:

1
2
3
~1 = 0
~0 = 1
// 对一个二进制数按位取反,即将 0 变 1,1 变 0

特殊用途

  • 使特定位翻转找一个数,对应 X 要翻转的各位,该数的对应位为 1,其余位为 0,此数与 X 对应位异或即可

例:X = 10101110,使 X 低 4 位翻转,用X ^ 0000 1111 = 1010 0001即可得到