位操作符对它们的各个位执行AND(与),OR(或),NOT(非)和XOR(异或)等逻辑操作
AND 按位与 处理两个长度相同的二进制数,两个相应的二进位都为1,该位的结果值才为1,否则为0。符号为&
如:0101 & 0011 == 0001
OR 按位或处理两个长度相同的二进制数,两个相应的二进位中只要有一个为1,该位的结果值为1,否则为0。符号为 |
如:0101 | 0011 = 0111
NOT 非 是一元运算符, 对一个二进制数的每一位执行逻辑反操作。使数字1成为0, 0成为1。 符号为~
如: ~ 0111 == 1000
XOR 按位异或 处理两个长度相同的二进制数,两个相应的二进位如果相等,则该位结果值为0,不相等则为1。符号为^
如:0101 ^ 0011 = 0110
下面介绍利用位操作符和移位操作符操作一个整形值中的单个位:
(1)把指定的位设置为 1
value = value | 1 << bit_number; //bit_number是指定的位数,取值范围是从0到value位数范围减1
#include <stdio.h>
#define bit_number 3
int main()
{