C/C++位操作初步(一)

2014-04-06 17:35:32 · 作者: · 浏览: 260

  位操作允许程序员对单独的位进行操作,例如,早某些机器上,短整型占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,以起到对其它各位的屏蔽作用。