부호가있는 2 진수를 2의 보수 메소드로 추가하면 MSB (부호) 로의 carry와 carry out이 동일하지 않은 경우 왜 자동으로 오버 플로우가 발생 했습니까?2의 보수가 carry로 오버플로를 감지합니다.
2
A
답변
0
한 가지 사실을 알아 봅시다.
음수와 양수 피연산자를 추가하면 결과는 항상 표현의 범위에있게됩니다. 오버플로는 동일한 부호 (양수 또는 음수 모두)가있는 두 개의 숫자를 더할 때 결과가 반대 부호를 가질 때 발생합니다.
숫자를 2의 보수로 더할 때 첫 번째 피연산자의 부호 비트와 두 번째 피연산자의 부호 비트를 더합니다. 우리가 긍정적 인 + 긍정적 인 피연산자를 추가 할 때
, 부호 비트의 합은 무슨 문제가되지 않는다는 것을 의미한다 0
0XXX (positive)
+ 0XXX (positive)
------
0XXX (positive)
가, 캐리 아웃이 없을 것입니다 양수 + 양수 피연산자를 추가 할 때.
따라서 캐리 온은 기내 비트 1 결과의 부호가 될 부호 비트
1
0XXX (positive)
+ 0XXX (positive)
------
1XXX (negative)
에 존재하는 경우. 즉, 두 개의 양수 피연산자를 추가하고 그 결과 음수를 얻었습니다.
캐리 아웃 = 0
기호 기내에 비트 = 1 개
용량 초과!
우리 네거티브 + 제외 피연산자를 추가 부호 비트의 합은 반출과 0이다. 부정적인 + 부정적인 피연산자를 추가 할 때 그런 일이 중요하지 않음을 의미
1XXX (negative)
+ 1XXX (negative)
------
10XXX (positive)
는 항상 캐리 아웃이있을 것이다. "default"를 사용하면 결과는 양수가됩니다. 결과를 피연산자의 동일한 부호로 조정하기 위해 계속 수행해야합니다. 부호 비트로 기동되면 음수 결과가있는 두 개의 피연산자가 생깁니다.
그래서, 기내 비트 0 결과의 부호가 될 부호 비트
0
1XXX (negative)
+ 1XXX (negative)
------
10XXX (positive)
에 더 반입 가없는 경우. 즉, 두 개의 음수 피연산자를 추가했고 그 결과 양수를 얻었습니다.
캐리 아웃 = 1
기호 기내에 비트 = 0
용량 초과!
나는 이것이 내가 합류 한 이후로 내가 가장 즐거워했던 질문이다. 죄송합니다. 누군가가 대답하기까지 오랜 시간이 걸렸습니다. – GabrielOshiro