码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-10-28 21:33:21      阅读:284      评论:0      收藏:0      [点我收藏+]

标签: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比啊

 

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

标签:style   blog   io   color   sp   div   on   问题   log   

原文地址:http://www.cnblogs.com/linrong/p/4057708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!