为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ibeautiful 2021-07-16 18:05:33
在阅读 Python 的内置类型 number 尤其是integers 时,我遇到了下面引用的这一行;普通整数至少有 32 位长。范围至少为 -2,147,483,648 至 2,147,483,647(约 ± 20 亿)。这是否意味着我能想到的任意数字有 20 亿位,是 Python 将其显示为普通整数的限制吗?如果我应该更具体地问,参考上述引用的句子,“32 位长”是什么意思。
查看完整描述

2 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

不是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。


查看完整回答
反对 回复 2021-07-28
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

位是可以存储 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,以不同的方式存储)。


查看完整回答
反对 回复 2021-07-28
  • 2 回答
  • 0 关注
  • 273 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信