2017-04-25 4 views
-4

방금 ​​2's complement 메서드에 대해 읽었으며 단항 마이너스를 사용하여 숫자를 음수로 만드는 것보다 빠르다는 것이 궁금합니다.단수 마이너스 vs 2의 보완을 음수로 만들기

int a=10; 
a=-a; 

2의 보수 마이너스

단항

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

OUTPUT

-10 모두 시간이 오래 걸리지 않습니까?

+2

그런 사소한 일에 대해 "어느 것이 더 빠를 것"이라고 부탁하는 것은 논쟁 거리가 될 수는 없지만 여기서 잘 받아 들여지지는 않습니다. –

+0

@BartekBanachewicz 번호가 부정적인 시간을 덜 잡는 방법을 알고 싶었습니까? 또는 그들은 같은 시간이 걸릴까요? – Sniper

+0

컴파일러가 두 번째 코드에 더 빠른 코드를 생성하면 * 매우 * 이상하게 보일 것입니다. – HolyBlackCat

답변

4

두 번째 옵션은 정의 된 동작이 아닙니다. C++ 표준은 음수 표현을 위해 2의 보수를 요구하지 않지만, 기대 한대로 작동 할 것이라고 보장하지 않습니다.

2의 보수를 사용하는 플랫폼에서 컴파일러는 두 형식을 더 빠르게 최적화하기 때문에 두 연산의 속도는 동일합니다.

+0

그러나 코드를 실행 한 후에 -10 출력을 얻습니다. – Sniper

+0

@Sniper이 답변을 다시 읽었습니다. –

+0

알았습니다. 감사 – Sniper