在阅读有关Python的内置数字类型,特别是 integers 的同时,我碰到了下面引述的这一行;
普通整数至少32位长。范围至少为-2,147,483,648到2,147,483,647(大约 ± 20亿)。
这是否意味着我能想到的任意数字都具有20亿位数,这是Python将其显示为纯整数的限制吗?如果我要更具体地问,“ em> 32位长” 是指上述引用的句子是什么意思。
答案 0 :(得分:2)
一点就是可以存储0或1的少量计算机空间。
因此,如果我有32位,则可以表示
00000 ... 000(32个零)
到
11111 ... 111(32个)
以binary编写时。
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,并且以不同的方式存储)。
答案 1 :(得分:1)
不是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和最大的2147483647。