2014-08-31 6 views
0

누군가 내 작업을 재빨리 점검 할 수 있는지 궁금합니다. 두 개의 음수가 주어지면 : -33과 -31. 두 항목을 더하면 2의 보수를 사용하는 결과가됩니다.2의 보수를 사용하여 두 개의 음수 추가하기

참고 : 6 비트의 단어 길이가 작동에 사용되어야합니다.


내 대답은

그래서이 일 후에 내가 2의에서 100001로 -31을 계산. 나는 또한 -33을 2의 보수로 011111로 계산했다. 그들을 함께 추가 할 때 나는 1000000을 얻었지만이 숫자는 7 자리이므로 6 비트의 단어 길이에 바인딩되어 있기 때문에 더 높은 순서 비트를 잘라 냈습니다. 숫자 000000이 생성됩니다. 여기에는 부호 비트 0이 들어있어 짝수 일 것입니다. 그러나 2 개의 음수의 합이 심지어는 초과 될 수 없기 때문에 분명히 오버플로입니다. 그래서 000000의 2는 000000입니다.

따라서 응답은 0이어야합니다. 버퍼 오버플로가 발생했기 때문에 0입니다. 이게 너처럼 보이니? 감사. :) 모든

답변

1

첫째 : -33은 + (-31)

-33 0이 6 비트 2의 보수로 표현할 수없는되어 수 없습니다. 01 1111b은 십진수로 +31이므로 추가 결과는 0입니다.

따라서 정답은 다음과 같습니다. -33은 6 비트 표현에서 유효하지 않은 숫자이므로 아무런 결과가 없습니다.

-64 같다 7 비트 2의 보수 -33 = 101 1111b

110 0001 
+101 1111 
    = 
1100 0000 

인치