내가이 그림을 이해하려고 노력 중이 야하지만 난 이해하지 못하는 부분이 있습니다정수에 대한 이원 표현 이해에 대한 도움?
이
- 왜 추가 않습니다 "하지만 컴퓨터는 음수 거꾸로 계산했다" 이진수 앞에 1을 쓰면 컴퓨터가 거꾸로 계산됩니다.
"비트를 뒤집고 1을 더하십시오!"
- 이것은 무엇을 의미합니까?
woops : http://csillustrated.berkeley.edu/PDFs/integer-representations.pdf
내가이 그림을 이해하려고 노력 중이 야하지만 난 이해하지 못하는 부분이 있습니다정수에 대한 이원 표현 이해에 대한 도움?
이
"비트를 뒤집고 1을 더하십시오!"
woops : http://csillustrated.berkeley.edu/PDFs/integer-representations.pdf
이 니 게이트시킨다. 다음은 이진수로 표현 된 -4에서 4까지의 숫자입니다.
4 0000 0100
3 0000 0011
2 0000 0010
1 0000 0001
0 0000 0000
-1 1111 1111
-2 1111 1110
-3 1111 1101
-4 1111 1100
그래서 1에서 -1로 가고 싶습니다. 우리는 먼저 우리가 추가 한
1 0000 0001
flip bits
-----------
1111 1110
의 모든 비트를 플립 1 :
1111 1110
+ 1
-----------
1111 1111
우리는 지금이 -1.
당신이 signed integers라고 얘기하고 있습니다.
나는 일러스트가 보이지 않지만 아마도 2의 보수 표현에 대해 이야기하고있을 것입니다. (http://en.wikipedia.org/wiki/Two's_complement)
왜 1 전면 컴퓨터가 거꾸로 계산하는 의미를 부가 하는가?
운반 방법으로 인해 FFFFFFFFF + 1 == 0
및 0 - 1 == FFFFFFFF
입니다. 첫 번째 비트를 포함하여 모든 비트가 뒤집 힙니다. 음수를 1 비트 (80000000 - FFFFFFFF)로 시작하는 음수로 간단하게 정의하면 자연스러운 오버플로가있는 더하기 유니폼 동작을 얻을 수 있습니다.
플립 비트 및 추가 1 : 2의 보수에서,이 예에 의해 표시 될 수있다 쉬운 다수에게
~x+1 == -x; // always true
검색 항목 : wiki 2 's complement –