位操作

来源:互联网 发布:s7下不了软件 编辑:程序博客网 时间:2024/06/06 20:23

位逻辑运算符

~:二进制反码或者按位取反
&:逐位比较产生一个新值。只有两个操作数的对应位都为1时结果才是1。
|位或:按位比较,有一个为1则取值为1
^:位异或

1、用法:掩码

使用位和 &
就是某些位设为开(1)而某些位设置为关(0)的位组合。
用于覆盖某个变量的某些位。

2、用法:打开位

使用位或 |
把某个变量的特定位打开。

3、用法:关闭位

使用& ~把特定位关闭

4、用法:转置位

使用^

5、用法:查看一位的值

判断flag的第一位是否和mask相同。

flag = 10110101;mask = 00000010if (flag == mask) {    printf("wow");}//不能工作

因为flag中的其它位也会和mask比较,产生其它的结果。

if ((flag & mask) == mask) {    printf("wow");}//可以工作!

位字段

struct {    unsigned int a : 1;    unsigned int b : 2;    unsigned int c : 3;} prnt;prnt.a = 0;prnt.b = 1;prnt.c = 100;

使用位字段决定每个字段的宽度,也就是说,a只能赋值不超过1的数。
必须确保值没有超过字段的容量。
如果超过了,就会在下一个unsigned int储存位置。

0 0
原创粉丝点击