2012-01-05 5 views
1

1을 보완하면 출력이 -2가됩니다. 이 작업은 내부적으로 어떻게 수행됩니까?이진수를 보완합니다.

처음에는 비트가 반전 된 것으로 가정 했으므로 0001은 1110이되고 1이 더해져서 1111이됩니다. 그러면 저장된 숫자는 어떻게됩니까?

+0

FWIW를 첨가하여 만든 유효한'-' 연산자는 당신이 묘사하는 것을 정확히 수행합니다. 2의 보수를 취합니다. '~'연산자를 사용하면 그렇게 할 수 있습니다. – geoffspear

+0

고마워 .... 가서 – Akash

답변

3

음, 아니요.

1 == 0b00000001 
~1 == 0b11111110 

을 그리고 그 컴퓨터가 내부적으로 음수를 표현하는 방법은 2의 보수에 -2 : 당신이 일을 보완 할 때, 당신은 단지 비트를 반전 이동합니다. http://en.wikipedia.org/wiki/Two's_complement를 참조하지만, 여기에 몇 가지 예입니다 :

-1 == 0b11111111 
-2 == 0b11111110 
.... 
-128== 0b10000000 
+127== 0b01111111 
.... 
+2 == 0b00000010 
+1 == 0b00000001 
0 == 0b00000000 
1

가 Whar 당신은 의미합니까 "나는 보완하면 1 (~ 1),"? 은 보완형이며, 은 2 중 보완입니다. Twos-Complement는 음수와 같은 알고리즘을 사용하여 음수를 더하고 빼는 것을 허용하므로 더 일반적입니다 (대부분의 컴퓨터에서 사용됩니다).

의 보수가에 postive 번호의 이진 표현을 취하고 1에서 0 및 0에서 1까지의 모든 비트를 스위칭하고, 하나

5 0000 0101 
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 
-5 1111 1011 
etc. 
+0

그리고 비트 보완, C에서'~'. –

관련 문제