为了账号安全,请及时绑定邮箱和手机立即绑定

请教一下关于|和&的使用

请教一下关于|和&的使用

PHP
FFIVE 2019-03-13 06:56:25
经常看到一些系统的源码或者c的源码,如下: #define R 1 #define B 2 #define C 4 #define D 8 run_some_function(R|B|C); 定义的时候均使用了2的某次方,使用的时候,使用|或者&组合,有哪位大神能详细讲解一下这里面的原理么?
查看完整描述

2 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

补充楼上
这种二进制且(&)或(|)的操作是在设置标志位(flag)
通过楼上你可以发现 0-f 每个数都可以看做是四位二进制
通过不同数字的且或操作 会映射到一个最终的四位二进制上
即这个二进制串上哪些位是0 哪些是1

比如说
我们规定

_ _
0位定义为选项A
1位定义为选项B
...

那么
0100
的意思就是 只打开选项B 其他保持关闭

所以只要设计好某个十六进制/十进制数对应的开关意思
那么你对它们的任意组合到最后都可以被作为一个二进制串去解析你打开了哪些标志位

查看完整回答
反对 回复 2019-03-18
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

1 0001
2 0010
4 0100
8 1000

0001 | 0010 = 0011

后面不用我说了吧!

补全吧还是

1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
a 1010
b 1011
c 1100
d 1101
e 1110
f 1111

查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 381 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信