gpt4 book ai didi

c++ - 如果设置了最低位,则有条件地异或而不分支

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:12:55 25 4
gpt4 key购买 nike

我有三个无符号 32 位整数,比如 abc。如果b的最低位是1,我想将ca异或,并将结果存入c。我们可以通过以下方式做到这一点:

#include <cassert>

int main()
{
// Some values for a and c
unsigned a = 16;
unsigned c = 25;

unsigned b = 5; // 101_2

if(b & 1)
{
c ^= a;
}

assert(c == 9);
}

我可以在没有分支的情况下有条件地执行此操作吗,也就是说,没有 if 语句?

最佳答案

有很多方法可以做到这一点。这是另一个,没有乘法,只有 4 个运算。

c ^= a&(-(b&1));

关于c++ - 如果设置了最低位,则有条件地异或而不分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24656311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com