首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于位运算 或“|”的一些疑问,该怎么处理

2012-02-19 
关于位运算 或“|”的一些疑问如题,或(or),运算符:|我看见有的函数是这样使用的:C/C++ codexxxxx(FLAG_A | F

关于位运算 或“|”的一些疑问
如题,或(or),运算符:|

我看见有的函数是这样使用的:

C/C++ code
xxxxx(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进制的不行,因为|是按位操作的,判断用&
[解决办法]
探讨
如题,或(or),运算符:|

我看见有的函数是这样使用的:
C/C++ code
xxxxx(FLAG_A | FLAG_B | FLAG_C);

那么,这个函数是如何判断传入的参数包含用 | 隔开的这些选项呢?
难道这些选项的值的二进制形式是这样的:
C/C++ code

#define FLAG_A 1 /* 000000001 */
#define FLAG_……

[解决办法]
C C++语言基础,楼主要加紧修行

热点排行