一元减号vs 2的补数使得数字为负数

时间:2017-04-25 13:59:22

标签: bitwise-operators unary-operator

我刚刚阅读了2's complement方法,并想知道它是否比使用一元减号更快地使数字为负数。

  

Unary Minus

int a=10;
a=-a;
  

2的补充

int a=10;
a=~a+1;
  

输出

两种情况下都是

-10 哪个会花费更少的时间?

1 个答案:

答案 0 :(得分:4)

第二个选项未定义行为。 C ++标准并没有强制要求2的补码表示负数,但不能保证它会做你想做的事情。

在使用2补码的平台上,两种操作的速度都是相同的,因为编译器会将两种形式优化为更快的形式。