C/C++题目--位运算
题目:有这样一个巧妙的表达式: a^=b^=a^=b; 它不需要临时变量就可以交换a和b的值。 【 答案 】 这不具有可移植性。它试图在序列点之间两次修改变量a,而这种行为是未定义的。例如,有人报告如下代码: int a=123,b=7654; a^=b^=a^=b; 在SCO优化C编译器下会把b置为123,把a置为0。 题目:取一个整数a从右端开始的4~7位。 【答案】 main() { unsigned a,b,c,d; scanf("%o",&a); b=a>>4; c=~(~0<<4); d=b&c; printf("%o\n%o\n",a,d); } 题目:一条语句实现x是否为2的若干次幂的判断。 【答案】 题目:求下面函数的返回值(微软) int fun(x) { int countx=0; while(x) { countx++; x=x&(x-1); } return countx; } 假定x=9999。 【答案】 8 文章来源: https://blog.csdn.net/chen1083376511/article/details/92001876