C语言Bit Operation之按位与


  1. #includestdio.h>
  2. int main()
  3. {
  4.     int a=3;
  5.     int b=5;
  6.     printf(" a&b = %d\n",a&b);
  7.     getchar();
  8.     return 0;
  9. }


image

0000 0011

&

0000 0101

--------

0000 0001

高七位全部变0,低0位为1.

故与运算可以用来实现下面功能:

一、清0,将数与0做与;

二、取某个指定位的值:

典型应用:


  1. if((8-value)&0B100) // 取出8-value的第三位的数值
  2.     {
  3.         ioctl(fd, 1, 5);
  4.     }
  5.     else
  6.     {
  7.         ioctl(fd, 0, 5);
  8.     }
  9.     if((8-value)&0B010)
  10.     {
  11.         ioctl(fd, 1, 6);
  12.     }
  13.     else
  14.     {
  15.         ioctl(fd, 0, 6);
  16.     }
  17.     if((8-value)&0B001)
  18.     {
  19.         ioctl(fd, 1, 7);
  20.     }
  21.     else
  22.     {
  23.         ioctl(fd, 0, 7);
  24.     }


三、保留指定位

84(10) 0101 0100(2)

现要将数从左3、4、5、7、8的数取出来组成一个新数,将其与一个这些位为1其它位为0的数做与运算:

0101 0100(2)

&

0011 1011(2)

-----------

0001 0000(2)

 

得到一个十进制为16的数。

 

参考文献:

http://blog.sina.com.cn/s/blog_634296930100q08m.html

有空再研究或、取反等……。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值