크기를 조정하는 방법 :다음과 같습니다 C에서 내가 수식을 가지고 (는 * X)에서 두 개의 가능성이 더 큰 숫자를 사용하는 int/B 공식
X = (a * X)/b;
이 a/b
와 X
크기를 조정하는 데 사용됩니다. 그러나 X
은 16 비트 부호없는 int이며 a
을 통한 곱하기가 쉽게 오버플로 될 수 있습니다. 어떻게하면 정확한 결과를 가진 정수 만 사용하여이 계산을 수행 할 수 있습니까?
물론 부동 소수점 연산을 사용할 수 있지만이 연산은 부동 소수점 하드웨어가없는 프로세서에서 작동 할 가능성이 높습니다.
편집 : 나는 a와 b가 모두 32 비트 부호없는 정수라고 말하는 것을 잊었습니다. 내 대답은 모두 16 비트로 맞을 때까지 a
과 b
으로 변경되었습니다. 그런 식으로 a * X
은 최대 32 비트이며 최종 계산은 정확합니다.
할당 할 때 32 비트로 승격시킬 수 있습니까? – huon