代码揭秘:位操作的运用
通上将位操作符进行给合,可以实现许多复杂的功能。 (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; }