用int类型存储99999999999999999,只能存储2的32次方的值-1,对吧?

如果是无符号4字节整数,最多只能存储2 ^ 32-1。如果大于这个数,就会溢出。但由于二进制的不同,并不意味着大于这个极限的都是这个极限。我们举个小一点的例子。

假设一个4位二进制数(0000 ~ 111,无符号)可以存储16个从0~15的数,如果存储一个20:

20的二进制是10100(注意是5位二进制)。如果放4位数,最左边的1会因为放不下而被扔掉。所以实际存储的是0100,也就是十进制4。