关于位运算 或“|”的一些疑问,该怎么处理
关于位运算 或“|”的一些疑问如题,或(or),运算符:|我看见有的函数是这样使用的:C/C++ codexxxxx(FLAG_A | F
关于位运算 或“|”的一些疑问
如题,或(or),运算符:|
我看见有的函数是这样使用的:
C/C++ codexxxxx(FLAG_A | FLAG_B | FLAG_C);
那么,这个函数是如何判断传入的参数包含用 | 隔开的这些选项呢?
难道这些选项的值的二进制形式是这样的:
C/C++ code#define FLAG_A 1 /* 000000001 */#define FLAG_B 2 /* 000000010 */#define FLAG_C 4 /* 000000100 */#define FLAG_D 8 /* 000001000 */
或者十进制形式是这样的:
C/C++ code#define FLAG_A 1#define FLAG_B 10#define FLAG_C 100#define FLAG_D 1000
之后,函数就判断传入的数值内是否包含这些选项的值,10进制的话,检测每一位上的数是否为1,有则说明有这个选项,否则无这个选项。
但是,2进制怎么判断?
[解决办法]&啊。
[解决办法]if(Flag & FLAG_A)//...
if(Flag & FLAG_B)//...
[解决办法]你说反了,是二进制的才行,10进制的不行,因为|是按位操作的,判断用&
[解决办法][解决办法]C C++语言基础,楼主要加紧修行