[英]What Does the Bitwise Complement Function Do in a For Loop in C++?
[英]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.