无符号数溢出问题


若给无符号数赋一个超过它表示范围的值,
结果是初始值对无符号类型表示数值总数取模后的余数。

例子:
例1:
8比特大小的 unsigned char类型
可以表示0到255总共256个数。
如果把-1赋给8比特大小的 unsigned char类型
所得的结果是255(-1对256取模)。

注:如果对取模有疑问的话,见 求模或求余.txt

例2:
unsigned int u=10;
int i=-42;
cout<//如果int占32位,输出结果为4294967264
相加前首先把-42转化成无符号数。
即-42对2^32求模。
(unsigned int 类型总共可以表示0到2^32-1这总共2^32个数)
(2^32=4294967296)


相关文档
最新文档