В C++ я пытаюсь использовать оператор modulo для двух неподписанных переменных int, например, в умножении Марсалья с алгоритмом переноса. Результаты кажутся правильными, но я не уверен в ограничениях по модулю.modulo with unsigned int
m_upperBits = (36969 * (m_upperBits & 65535) + (m_upperBits >> 16))<<16;
m_lowerBits = 18000 * (m_lowerBits & 65535) + (m_lowerBits >> 16);
unsigned int sum = m_upperBits + m_lowerBits; /* 32-bit result */
unsigned int mod = (max-min+1);
int result=min+sum%mod;
'usigned int' не гарантированно имеет ровно 32 бита. Кстати, в чем вопрос? – JohnB
Я не уверен, что вы не уверены в –
Что такое «ограничения по модулю»? – harold