2013-09-01 4 views
0

1s (양수의 비트 반전) 및 2s (양수 2 진수 비트 반전 및 1 추가)를 찾는 방법을 찾을 수있는 것 내 질문에 대답하는 것 같다.1과 2s의 음수를 보완

숙제는 음수의 보수를 찾아야합니다. 그래서 양성으로 시작하는 대신에 음수가 무엇인지 알아내는 대신에 음수를 얻고 그 보완 물을 찾으라는 질문을 받았습니다.

어리석은 생각은 양수 값 이진 값을 찾은 다음 비트를 플립하여 내 음수를 얻은 다음 다시 플립하여 음수의 1을 보완하는 것입니다. ??

+0

먼저 음수 표시 방법을 지정해야합니다. – starblue

답변

4

시작 번호가 양수인지 음수인지는 중요하지 않습니다. 2의 보수 시스템에서 -x~x + 1과 같습니다. 원래 숫자가 양수이면 결과는 음수가되고 원래 숫자가 음수이면 결과는 양수가됩니다. 8 비트 예 - 진 수단 2의 보수 바이너리 다음 -x (binary) 열과 ~x+1 (binary) 열이 동일

x (decimal) | -x (decimal) | x (binary) | -x (binary) | ~x (binary) | ~x+1 (binary) 
------------+--------------+------------+-------------+-------------+--------------- 
    5  |  -5  | 0000 0101 | 1111 1011 | 1111 1010 | 1111 1011 
    -5  |  5  | 1111 1011 | 0000 0101 | 0000 0100 | 0000 0101 
    110  | -110  | 0110 1110 | 1001 0010 | 1001 0001 | 1001 0010 
    -38  |  38  | 1101 1010 | 0010 0110 | 0010 0101 | 0010 0110 

참고.

숫자의 1의 보수를 얻으려면, 바로 ~x입니다.

+1

실제로 그런 경우가 아니라면 x == - (- x)를 원하는대로 이러한 형식의 모델을 모델링하는 것은 실용적이지 못합니다. –