首页 > 代码库 > 第十六天: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语言进阶之位运算及内嵌汇编
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。