在 C++ 中使用 if( num & 2) 作为条件?
using if( num & 2) as a conditional in c++?
我在思考一些我从未遇到过的事情。。也许这是有原因的。希望有人能快速识别模式!
测试 的值检查奇数,或者即使更改为<2>:
int num = 1;
int test = 1;
while (num <= 255) {
if (num & test) {
cout << num << " num & 2 =" << (num & 2) << endl;
}
num++;
}
问题1:你如何描述数学运算;测试
问题2:如果测试等于3,4或5,会发生什么?
谢谢你分享你的想法。
答案1:操作是按位AND
Example num = 10, test = 1
10 = 1010b, 1 = 0001b
num & test = 0000b
if(num & test)
相当于if(bool(num & test)) bool(10 & 1) == bool(0) == false
答案2:
数值测试检查奇数
只有当test=1时,因为所有奇数在最低位中都有1b
1 = 0001b
2 = 0010b
3 = 0011b
4 = 0100b
etc.
Example num = 10, test = 3
10 = 1010b, 3 = 0011b
num & test = 10 & 3 = 1010b & 0011b = 0010b = 2
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 在没有太多条件句的情况下,我如何避免被零除
- 基于多个条件处理地图中的所有元素
- 条件constexpr函数
- 无论条件是否为true,if总是在c++中执行
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 基于模板值的条件变量
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 将按位if条件转换为普通if条件
- 条件断点在不应该触发时触发
- 为什么简单的算术减法在"if"条件下不起作用?
- 如何在for循环中包含两个索引值的测试条件
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 我提出什么条件才能再加5%的折扣
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- 即使没有满足他们的条件,我也无法通过一些 do-while 循环
- 如何编写一个使用n倍三元条件语句的C++布尔函数
- 没有超时的C++条件变量
- 正在LLVM中检测整数比较条件
- 在 C++ 中使用 if( num & 2) 作为条件?