代码揭秘:位操作的运用

通上将位操作符进行给合,可以实现许多复杂的功能。 (1) 使用或运算符“|”和取反符“~”来实现与操作

     int a = 6;
  int b = 5;
  a = ~a;
 b = ~b;
 printf("%d\n",~(a|b));
  std::cout << "Press Enter or Return to exit:";
std::cin.get();
  return 0;

输出结果为4; (2) 实现一个判0的函数,即如果参数为0,刚返回1

    int isZero(int x)
{
   int xZero = x | 0;
        return !xZero;
}

(3) 实现一个判等函数,即如果参数a和b相等,则返回1;否则返回。

    int isEqual(int a, int b)
{
    return !(a^b);
}

(4) 实现一个判正函数,即如果参数是正数,那么返回1;否则返回0

int isPositive(int a)
{
   return !((x>>31)+!a);
}

(5) 在32位系统下,如果有一个4字节的数据x,这些字节从低到高标记为0~3,现要求从该数据中抽取出第n个字节。

int getByte(int x, int n)
{
    return (x>>(n<<3))&0xff;
}