首页 > 代码库 > 第十六天:C语言进阶之位运算及内嵌汇编

第十六天:C语言进阶之位运算及内嵌汇编

  位运算在驱动开发中是经常遇到的,尤其是置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比啊

 

第十六天:C语言进阶之位运算及内嵌汇编