标签:style blog io color sp div on 问题 log
位运算在驱动开发中是经常遇到的,尤其是置0和置1。既要指定的位数发生变化,又不能改变其它位的值。还要高效率的编写代码。这时候技巧就很重要了。在位运算中有几个符号: | 按位或 & 按位与 ^ 异或 ~按位非
1 #include<stdio.h> 2 3 int main() 4 { 5 int a = 0x1101; 6 int b = 0x1011; 7 int c = 9; 8 printf("a | b is %x\n",a | b); 9 printf("a & b is %x\n",a & b); 10 printf("a ^ b is %4x\n",a ^ b); 11 printf("~c is %d\n",~c); 12 13 }
结果为 a | b is 1111 a & b is 1001 a ^ b is 110 ~c is -10
前三个结果没有问题,最后一个答案要着重理解。首先 将 9 用十六进制写成 0x00000101 取非的话就是 0xfffffefe 。因为是c是有符号为,最高一位为1表示负数,而负数在计算机中是已补码的形式表现出来的。因此要输出十进制数的话,要先将补码-1比啊
标签:style blog io color sp div on 问题 log
原文地址:http://www.cnblogs.com/linrong/p/4057708.html