无符号的整数加法、乘法是mod2^32的加法、乘法;
证明:
#include "stdafx.h"
#include "iostream"
using namespace std;
int main()
{
unsigned int t = UINT_MAX;
cout << "令t = unsigned int 的最大值 = " << t << endl;
cout << "2^32 = " << pow(2, 32) << endl;
cout << "2^32 - t = " << pow(2, 32) - t << endl;
cout << "由上可得2^32大于unsigned int能表示的最大值\n\n";
cout << "故2^32用unsigned int表示将会溢出\n\n";
cout << "无符号整数的mod2^32等价于它们本身\n\n";
cout << "故无符号的整数的加乘为其mod2^32的加乘\n";
return 0;
}
代码运行结果如下:
令t = unsigned int 的最大值 = 4294967295
2^32 = 4.29497e+09
2^32 - t = 1
由上可得2^32大于unsigned int能表示的最大值
故2^32用unsigned int表示将会溢出
无符号整数的mod2^32等价于它们本身
故无符号的整数的加乘为其mod2^32的加乘