如果32位机器只能处理高达2 ^ 32的数字,为什么我可以在没有机器崩溃的情况下写入1000000000000(万亿)?

Modified on: Thu, 21 Mar 2019 06:20:02 +0800

32位计算机只能存储最多2个31 - 1的有符号整数
这就是我们耗尽IPv4地址并进入64位时代的原因。

然而,数字2 31 - 1(2,147,483,647)并没有1万亿(1,000,000,000,000)那么大,我似乎能够在没有机器崩溃的情况下显示正常。

有人可以解释为什么会这样吗?

作者:,community wiki,5 revs, 4 users 53%
Ben Johnson mk2

最佳答案

我通过问你一个不同的问题回答你的问题:

  

你怎么指望你的手指?

你可能用一只手数到最大可能的数字,然后当你的手指用完时你会转到你的第二只手。计算机做同样的事情,如果他们需要表示一个大于单个寄存器可以容纳的值,他们将使用多个32位块来处理数据。

作者:,community wiki,Scott Chamberlain

相关问答

添加新评论