산술 오버플로 란 무엇입니까?
산술 오버 플로우는 계산 또는 조작으로 인해 스토리지 시스템 또는 레지스터가 처리하기에 너무 큰 결과를 산출 할 때 컴퓨터, 특히 컴퓨터 프로그래밍 영역에서 발생하는 조건입니다. 오버플로는 주어진 결과가 스토리지에 지정된 메모리를 초과하여 양을 나타낼 수도 있습니다. 어떤 경우에는 데이터의 오버 플로우가 다른 데이터 저장 위치에 저장 될 수 있습니다. 다른 프로그램에서는 프로그램이 중단되거나 느리게 실행되거나 부정확 한 결과가 발생할 수 있습니다. 간단한 핸드 헬드 계산기 및 통신 장치도 처리 할 수있는 값의 크기에 제한이 있으므로 산술 오버플로는 전체 개인용 또는 업무용 컴퓨터로 제한되지 않습니다.
프로그래머는 교육 초기에 산술 오버플로 오류를 처리하는 방법을 배우는 경향이 있는데, 이는 매우 일반적인 프로그래밍 오류이기 때문입니다. 산술 오버플로를 처리하는 방법에는 여러 가지가 있습니다. 프로그램의 디자인은 매우 중요한 역할을합니다. 일관되고 정확한 데이터 유형과 길이를 사용하는 잘 설계된 프로그램은 그러한 오류가 발생하지 않아야합니다. 작업 순서를 확인하고 모든 것을 일관성있게 유지하는 데주의를 기울이면 오버플로 오류를 완전히 피할 수 있습니다.
산술 오버플로 오류를 처리하는 다른 방법은 작업을 더 작은 단계로 나누는 것입니다. 많은 수의 계산과 과도한 계산이 필요한 복잡한 작업보다 시스템에서 간단하고 작은 작업을 처리하는 것이 더 쉬운 경우가 많습니다. 반환 된 숫자가 완전히 정확한 것이 중요하지 않은 경우 때때로 사용자에게 오버플로 오류를 알리지 만 어쨌든 값을 반환하는 방식으로 프로그램을 작성하는 것으로 충분합니다. 산술 오버플로 오류를 처리하는 가장 일반적인 방법은 오류를 완전히 무시하는 것입니다. 이것은 일반적으로 무해하지만 잘못된 결과를 제공하고 프로그램의 유용성과 효율성을 손상시킬 수 있습니다.
Ariane 5 편 501 편은 산술 오버플로 오류의 위험을 명확하게 보여줍니다. 비행은 유럽 Ariane 5 소모품 발사 시스템의 첫 번째 테스트 실행으로, 이전 Ariane 4 시스템의 코드를 상당 부분 재사용했습니다. 그러나 Ariane 5의 가속은 Ariane 4의 가속보다 상당히 높았으며 프로그래밍은 필요한 더 큰 값을 처리하기에 적합하지 않았습니다. 따라서 로켓은 발사 후 37 초 후에 의도 한 비행 경로를 벗어나 파괴되어야했다. 이 간단한 프로그래밍 오류는 수억 달러에 달합니다.