我参加了一些c / c ++课程,据我所知,根据CPU架构,int类型的大小是有限的。
对于32位,int的最大值为2^32
(4,294,967,295
),但是当我使用计算器或excel时,我得到的数字很大而且比2^32
大。
我真的不明白这个程序打印价值如何大于2 ^ 23值。
答案 0 :(得分:2)
在32位系统中,您仍然可以使用大于32位的值。实际上,有一些BIGINT库(如GMP)允许您使用任意大的整数。这些大数字只需要在软件而不是硬件中处理。
[x86特定示例]如果简单的32位加法使用add
指令,它添加了两个32位寄存器,则64位或BIGINT加法需要将数字加到32位一次,手动将进位从一个加法传播到下一个。
另见: