如何将这两个比较分为1(位逻辑)

时间:2014-10-13 20:34:19

标签: if-statement

输入三个整数,n,标记和标记。

如果flag = 0则

return ((n & tag) == tag);

如果标志!= 0那么

return ((n & tag) != tag);

理想情况下,如果没有if语句,我想要一些简单的东西。

2 个答案:

答案 0 :(得分:1)

您可以将旗帜转换为布尔值。在C ++中:

 bool b_flag = flag;
 return !b_flag * ((n & tag) == tag) + b_flag * ((n & tag) != tag);

或者您可以使用三元运算符。

答案 1 :(得分:1)

如果flag可以转换为bool,可以简化为:

return !(flag ^ ((n & tag) == tag))