gpt4 book ai didi

c++ - C/C++ 位玩弄

转载 作者:IT老高 更新时间:2023-10-28 22:26:16 26 4
gpt4 key购买 nike

本着 graphics.stanford.edu/~seander/bithacks.html 的精神我需要解决以下问题:

int x; 
int pow2; // always a positive power of 2
int sgn; // always either 0 or 1
// ...
// ...
if(sgn == 0)
x -= pow2;
else
x += pow2;

当然我需要避免条件。到目前为止,我想出的最好的是

x -= (1|(~sgn+1))*pow2

但这涉及到我也想避免的乘法。提前致谢。

编辑:谢谢大家,

x -= (pow2^-sgn) + sgn

似乎可以解决问题!

最佳答案

我会试试的

x -= (pow2 ^ (~sgn+1)) + sgn

或者,正如lijie在评论中所建议的那样

x -= (pow2 ^ -sgn) + sgn

如果sgn0~sgn+1也是0,所以pow2 ^ (~sgn+1) == pow2。如果sgn1(~sgn+1)0xFFFFFFFF(pow2 ^ ( ~sgn+1)) + sgn == -pow2.

关于c++ - C/C++ 位玩弄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4274937/

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