我刚刚阅读了2's complement方法,并想知道它是否比使用一元减号更快地使数字为负数。
Unary Minus
int a=10;
a=-a;
2的补充
int a=10;
a=~a+1;
两种情况下都是输出
-10
哪个会花费更少的时间?
答案 0 :(得分:4)
第二个选项未定义行为。 C ++标准并没有强制要求2的补码表示负数,但不能保证它会做你想做的事情。
在使用2补码的平台上,两种操作的速度都是相同的,因为编译器会将两种形式优化为更快的形式。