곱셈이나 부동 소수점 캐스팅이 없는 정수 나누기의 상한선
C 및 C에서 정수 나누기(x/y)는 바닥값을 반환합니다. 결과의. 대신 부동 소수점 캐스팅 및 추가 곱셈을 피하고 상한선을 계산하려면 다음 방법을 고려하십시오.
1. (x y - 1) / y:
unsigned int x, y, q; // Round up q = (x + y - 1) / y;
이 공식을 사용하면 나눗셈을 수행하기 전에 1을 더하므로 상한선이 계산됩니다.
2. (x y)의 오버플로 방지:
x와 y를 더할 때 정수 오버플로를 방지하기 위한 대체 방법은 다음과 같습니다.
q = 1 + ((x - 1) / y); // if x != 0
이 공식은 다음을 제외하고 효과적으로 상한선을 1씩 증가시킵니다. x가 0이면 0으로 유지됩니다.
위 내용은 곱셈이나 부동 소수점 연산 없이 C/C에서 정수 나눗셈의 상한을 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!