位操作允许程序员对单独的位进行操作,例如,早某些机器上,短整型占16位,位操作将每一位单独操作。
C语言位操作基础
位操作允许程序员设置、清除、测试与其他的操作,这些操作如下表:

这些操作用于整型或者字符型
1、按位与(&)

通常我们可把按位“与”操作 & 作为关闭某位(即将该位置0)的手段,例如我们想要关闭a数中的第3位,而又不影响其它位的现状,可以用一个数0xF7,即二进制数1111 0111去与a数作按位“与”运算: 0x88 1000 1000 a数
& 0xF7 1111 0111 屏蔽数
= 1000 0000
注意,这个数除第3位为0外,其它各位均为1,操作的结果只会将a数中的第3位置0,而a数的其它位不受影响。也就是说,若需要某个数的第n位关闭,只需要将该数与另一个数按位相与,另一个数除了相应的第n位为0外,其它各位都为1,以起到对其它各位的屏蔽作用。
应用举例:判断一个数字的奇偶性
由于在二进制下,当最后一个数字为0,则此数字为偶数,若为1则此数为奇数
代码如下:
int even(const int value)
{
return ((value & 1)==0);
}
2、按位或(|)

通常我们可把按位“或”操作 | 作为置位(即将该位置1)的手段,例如我们想要将a数中的第0位和1位置1,而又不影响其它位的现状,可以用一个数0x03,即二进制数00000011去与a数作按位“或”运算:
0x88 1000 1000 a数
| 0x03 0000 0011 屏蔽数
= 1000 1011
注意,这个数除第0、1位为1外,其它各位均为0,操作的结果只会将a数中的第0、1位置1,而a数的其它位不受影响。也就是说,若需要某个数的第n位置1,只需要将该数与另一个数按位相“或”,另一个数除了相应的第n位为1外,其它各位都为0,以起到对其它各位的屏蔽作用。