了解纯整数在 Python 中的表示方式



在阅读 Python 内置的数字类型,特别是整数时,我遇到了下面引用的这一行;

纯整数的长度至少为 32 位。范围至少为 -2,147,483,648 到 2,147,483,647(大约 ± 20亿(。

这是否意味着我能想到的任何有 20 亿位数字的任意数字,Python 将其显示为纯整数的限制是有限的?如果我更具体地问,"32 位长">在提到上述引用的句子时是什么意思。

位是少量的计算机空间,可以存储 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稍微移动一点来划分。(这是怎么做到的本身就很有趣,看看二的补语(

因此,您提供的摘录实际上说 Python 中的整数以 32 位存储,这意味着 python 中的整数可以小至 -2,147,483,648,大至 2,147,483,647。(除此之外,它在内部被视为 bigint,以不同的方式存储(。

它不是 20 亿位数字,而是 20 亿的实际值。

32 位的引用表示 python 可以将纯整数存储到的位数。位以 2 为底表示(因为位可以是 0 或 1(,而我们更常见的以 10 为底的数字以 10 为底表示。基数 1 中的数字 2 是 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。

最新更新