문제

2개의 64비트 숫자("Hi" 및 "Lo")로 저장된 128비트 숫자가 있습니다.32비트 숫자로 나누기만 하면 됩니다.CPU의 기본 64비트 작업을 사용하여 어떻게 이를 수행할 수 있습니까?

(임의의 정밀 라이브러리가 필요하지 않습니다.기본 연산을 사용하여 이 간단한 나눗셈을 만드는 방법만 알면 됩니다.감사합니다).

도움이 되었습니까?

해결책

아키텍처가 처리할 수 있는 가장 큰 기본 표현(64비트)을 사용하여 값(128비트)을 저장하는 경우 분할의 중간 결과를 처리하는 데 문제가 발생합니다(이미 발견한 대로 :)).

그러나 항상 더 작은 표현을 사용할 수 있습니다.32비트 숫자 4개는 어떻습니까?이렇게 하면 오버플로 문제 없이 기본 64비트 작업을 사용할 수 있습니다.

간단한 구현(Delphi)을 찾을 수 있습니다. 여기.

다른 팁

일부 C 코드 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top