如何在c ++中检查单个二进制数字

时间:2013-09-08 00:52:11

标签: c++ binary flags

我为模糊而道歉,但如果我们提出问题,我们的老师特别告诉我们这样做

我想将9个标志存储为整数 即,0b111111111将全部绊倒。

现在,如果它被触发,我有一个if语句添加到int。 即。

if (flag0=="tripped" && flag0=="hasn't been tripped before") flagInt += 1;

if (flag1=="tripped" && flag1=="hasn't been tripped before") flagInt += 2;

if (flag2=="tripped" && flag2=="hasn't been tripped before") flagInt += 4;

等等,

我在编写代码时遇到困难,无法检查标志是否已被触发。 我怎么能这样做?

编辑:我已经考虑过将整数转换为它的二进制表示的字符串,所以我可以用括号进行chck,但是我必须对相当多的数据执行此操作,这会使它太慢

1 个答案:

答案 0 :(得分:3)

获得位n状态(将位n返回为0或1):

(value>>n) & 1

设置位n状态(标志为0或1):

value = (value & ~(1 << n)) | (flag << n)