了解如何在 Python 中表示普通整数

在阅读 Python 的内置类型 number 尤其是integers 时,我遇到了下面引用的这一行;

普通整数至少有 32 位长。范围至少为 -2,147,483,648 至 2,147,483,647(约 ± 20 亿)。

这是否意味着我能想到的任意数字有 20 亿位,是 Python 将其显示为普通整数的限制吗?如果我应该更具体地问,参考上述引用的句子,“32 位长”是什么意思。


ibeautiful
浏览 274回答 2
2回答

慕容3067478

不是20亿数字,而是20亿的实际价值。32 位的引用表示 python 可以存储一个普通整数的位数。位以 2 为基数表示(因为位可以是 0 或 1),而我们更常见的以 10 为基数的数字是以 10 为基数表示的。 以 2 为基数的数字 1 是 1,但是基数 2 中的数字 2 是 10 - 就像在基数 10 中一样,我们从 9 到 10。可以存储在 32 位中的最大值是您可以翻转 32 个 1 或 0 的组合数。这将使以下数字为2^32(=4 294 967 296)。但是需要减去1才能得到最大值,因为0也是一个组合,使得最大的无符号数为4 294 967 295。为了也表示负数,第一位通常保留用于对整数进行签名(1 表示负数,0 表示正数),因此它大致分为两半,使最小的数 -2 147 483 648 和最大的数 2 147 483 647。

鸿蒙传说

位是可以存储 0 或 1 的少量计算机空间。所以,如果我有 32 位,我可以表示范围从00000...000(32 个零)到11111...111(32个)当以二进制编写时。32 的数字是 4,294,967,295。这意味着,以最简单的方式,我们可以表示从 0 到 4,294,967,295 的所有数字。现在,在大多数情况下,我们也想表示负数,因此我们通过将 的范围从0 to 4,294,967,295移动一点来划分范围-2,147,483,648 to 2,147,483,647。(这是如何完成的本身很有趣,请查看Two's Complement)因此,您提供的摘录实际上说 Python 中的整数以 32 位存储,这意味着 Python 中的整数可以小到 -2,147,483,648,大到 2,147,483,647。(除此之外,它在内部被视为 bigint,以不同的方式存储)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python