산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

바이너리 오버플로

부호 있는 이진수에 대한 한 가지 주의 사항은 오버플로의 경우입니다. 여기서 덧셈 또는 뺄셈 문제에 대한 답은 할당된 비트 수로 표현할 수 있는 크기를 초과합니다. 부호 비트의 위치는 문제의 시작 부분부터 고정되어 있음을 기억하십시오.

마지막 예제 문제에서는 5개의 이진 비트를 사용하여 숫자의 크기를 나타내고 맨 왼쪽(6번째) 비트를 음수 가중치 또는 부호 비트로 사용했습니다. 크기를 나타내는 5비트로 표현 범위는 2 5 입니다. , 또는 0에서 최대까지 32개의 정수 단계

즉, 최대 +3110 숫자를 나타낼 수 있습니다. (0111112 ) 또는 최저 -3210 (1000002 ).

6비트 숫자 필드의 제한 사항

두 개의 이진수로 덧셈 문제를 설정하면 여섯 번째 비트는 부호에 사용되며 결과는 +3110을 초과합니다. 또는 -3210 미만입니다. , 우리의 대답은 틀릴 것입니다. 1710을 추가해 보겠습니다. 및 1910 이 오버플로 조건이 과도한 양수에 대해 어떻게 작동하는지 확인하려면:

정답(1001002 ), 여섯 번째 비트를 -3210으로 해석 장소는 실제로 -2810과 같습니다. , +3610 아님 +1710으로 얻을 수 있듯이 및 +1910 함께 추가되었습니다! 분명히 이것은 옳지 않습니다. 무엇이 잘못되었나요?

정답은 우리가 작업하고 있는 6비트 숫자 필드의 제한에 있습니다. ) 지정된 비트 필드의 허용 한도를 초과하면 오버플로 오류가 발생합니다. .

간단히 말해서, 6자리는 정확한 합을 나타내기에 충분한 비트를 제공하지 않으므로 가장 왼쪽의 "캐리" 비트를 버리는 전략을 사용하여 얻은 수치는 올바르지 않습니다.

6비트 이진 필드에 비해 너무 낮은 합계를 생성하기 위해 두 개의 음수를 더하면 유사한 오류가 발생합니다. -1710을 추가해 보겠습니다. 및 -1910 이것이 어떻게 작동하는지 함께 보기 위해(또는 경우에 따라 작동하지 않을 수도 있습니다!):

(잘못된) 대답은 긍정적입니다. 스물 여덟. 음수 17과 음수 19의 실제 합이 너무 낮아서 5비트 크기 필드와 6번째 부호 비트로 적절하게 표현되지 않는다는 사실이 이러한 어려움의 근본 원인입니다.

부호 비트에 일곱 번째 비트 사용

이번에는 부호 비트에 일곱 번째 비트를 사용하고 크기를 나타내는 데 6비트를 사용할 수 있다는 점을 제외하고 이 두 가지 문제를 다시 시도해 보겠습니다.

합계의 크기를 처리할 수 있을 만큼 충분히 큰 비트 필드를 사용하여 정답에 도달합니다. 이 샘플 문제에서 우리는 10진수 형식의 덧셈 문제를 수행하고 결과를 이진 답변과 비교하여 오버플로 오류를 감지할 수 있었습니다.

예를 들어 +1710을 추가할 때 및 +1910 우리는 함께 답을 당연히해야 한다는 것을 알고 있었습니다. +3610 , 따라서 이진 합계가 -2810으로 체크아웃된 경우 , 우리는 뭔가 잘못되었다는 것을 알고 있었습니다. 이것은 오버플로를 감지하는 유효한 방법이지만 그다지 효율적이지 않습니다.

결국, 보완의 전체 아이디어는 이진수를 안정적으로 더할 수 있고 동일한 숫자를 십진수 형식으로 더하여 결과를 다시 확인할 필요가 없다는 것입니다! 이것은 이진 양을 함께 추가하기 위해 전자 회로를 구축하려는 목적에 특히 해당됩니다. 회로는 정답이 무엇인지 이미 알고 있는 사람의 감독 없이도 자체 오버플로를 확인할 수 있어야 합니다.

우리에게 필요한 것은 추가 산술이 필요하지 않은 간단한 오류 감지 방법입니다. 아마도 가장 우아한 해결책은 기호를 확인하는 것입니다. 합계를 계산하고 추가된 숫자의 부호와 비교합니다.

분명히 두 개의 양수를 더하면 양수 결과가 나오고 두 개의 음수를 더하면 음수 결과가 나와야 합니다. 예제 문제에서 오버플로 조건이 있을 때마다 합계의 부호는 항상 반대였습니다. 추가된 두 숫자 중:+1710 플러스 +1910 -2810 제공 , 또는 -1710 플러스 -1910 +2810 제공 .

징후만 확인함으로써 우리는 무엇인가 잘못되었다는 것을 알 수 있습니다. 그러나 음수에 양수를 더한 경우는 어떻습니까? 합이 정확하려면 어떤 기호가 되어야 합니다. 또는 더 정확하게는 합계의 어떤 기호가 반드시 오버플로 오류를 나타냅니까?

이에 대한 대답도 마찬가지로 우아합니다. 절대 반대 부호의 두 수를 더하면 오버플로 오류가 발생합니다! 그 이유는 오버플로의 특성을 고려할 때 명확합니다. 오버플로는 숫자의 크기가 비트 필드의 크기가 허용하는 범위를 초과할 때 발생합니다.

동일하게 부호가 있는 두 숫자의 합은 두 숫자의 비트 필드 범위를 훨씬 초과할 수 있으므로 이 경우 오버플로가 발생할 수 있습니다. 그러나 양수를 음수에 더하면 합은 더한 두 수보다 항상 0에 더 가깝습니다. 그 크기는 반드시 원래 숫자의 크기보다 작아서 오버플로가 불가능합니다.

다행히도 이 오버플로 감지 기술은 전자 회로에서 쉽게 구현되며 디지털 가산기 회로의 표준 기능입니다. 다음 장에서 다룰 주제입니다.

관련 워크시트:

<울>
  • 이진 수학 워크시트

  • 산업기술

    1. 과학으로서의 전자
    2. 홈 랩 설정
    3. 전압계 사용량
    4. 3비트 바이너리 카운터
    5. 10진수 대 이진법
    6. 8진수 및 16진수 계산
    7. 이진법 뺄셈
    8. 오버플로 파이프란 무엇입니까?
    9. x86의 arm용 컨테이너 빌드
    10. Go on PLCnext 시작하기