use*_*112 3 c++ bit-manipulation bitwise-operators
我(愚蠢地)认为如果我采用布尔结果为true,强制转换为int并向左移动它我最终会在每一位重复LSB,显然不是!
如果我有一个布尔结果并且我想将其转换为全部为true而所有零都为false,那么最简单的方法(计算)是什么?
bool result = x == y;
unsigned int x = 0;
//x becomes all ones when result is true
//x becomes all zeros when result is false
Run Code Online (Sandbox Code Playgroud)
像这样,也许:
bool result = x == y;
unsigned int z = -result;
Run Code Online (Sandbox Code Playgroud)
一个更易读的解决方案IMO:
unsigned int set_or_unset_all_bits(bool comp) {
return comp ? ~0u : 0;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
216 次 |
最近记录: |