繁体   English   中英

在c / c ++中,二进制补码整数将+1转换为-1和0转换为1的按位运算是什么?

[英]In c/c++, what is a bitwise operation for two's complement integers to convert +1 to -1 and 0 to 1?

使用以下表达式将+1更改为-1和0更改为1很容易:

value = (value ? 0 : 1) - value;

但这引入了一个分支。 有执行相同表达式的按位方法吗?

当然,您可以使用无聊的旧数学,但是为什么不使用一些更奇怪的东西:

const int map[] = { 1, -1 };

thus,
map[1] yields -1
map[0] yields 1

so you'd write:
value = map[value];

value = 1 - 2*value; 根据要求将0映射为1并将+1映射为-1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM