대학에서 지정된 주 프로그램에 대한 함수를 작성해야하는 과제가 있습니다. 모두 c입니다.C 프로그래밍 - 오버플로하는 부호없는 정수의 합을 모듈로 사용
내 문제는 두 개의 부호없는 정수의 합계 모듈을 사용해야한다는 것입니다.
uint32_t mod_add(uint32_t x, uint32_t y, uint32_t n)
{
uint32_t res;
res = (x + y) % n;
x와 y의 합계가 2^32-1 미만인 경우에는 정상적으로 작동합니다. 내 문제는 합계가이 값을 초과하면 분명히 오버플로되고 모듈러스 값이 잘못된 것입니다.
제 과제물에 x = 2^32-3; y = 1174501 및 n = 2^32-1 (n은 모듈로 임); 내 결과는 1174497이며, 1174499 여야합니다.
아무도 아이디어를 어떻게 해결할 수 있습니까?
대신'res = ((uint64_t) x + y) % n;'시도해주세요. – BLUEPIXY
예 .... 64 비트를 사용할 수 없습니다 ... 문제가 있습니다. –