- #includestdio.h>
- int main()
- {
- int a=3;
- int b=5;
- printf(" a&b = %d\n",a&b);
- getchar();
- return 0;
- }
0000 0011
&
0000 0101
--------
0000 0001
高七位全部变0,低0位为1.
故与运算可以用来实现下面功能:
一、清0,将数与0做与;
二、取某个指定位的值:
典型应用:
- if((8-value)&0B100) // 取出8-value的第三位的数值
- {
- ioctl(fd, 1, 5);
- }
- else
- {
- ioctl(fd, 0, 5);
- }
- if((8-value)&0B010)
- {
- ioctl(fd, 1, 6);
- }
- else
- {
- ioctl(fd, 0, 6);
- }
- if((8-value)&0B001)
- {
- ioctl(fd, 1, 7);
- }
- else
- {
- ioctl(fd, 0, 7);
- }
三、保留指定位
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
有空再研究或、取反等……。