python如何表示这么大的整数?

2024-04-08

在C、C++和Java中,整数有一定的范围。我在 Python 中意识到的一件事是我可以计算非常大的整数,例如pow(2, 100)。相同的等效代码,在 C 语言中,pow(2, 100)显然会导致溢出,因为在 32 位体系结构中,无符号整数类型的范围是从 0 到 2^32-1。 Python 是如何计算这些大数字的呢?


基本上,Python 中的大数字存储在“数字”数组中。这被引用了,对吧,因为每个“数字”本身实际上可能是一个相当大的数字。 )

您可以在中查看实施细节长整数h http://svn.python.org/view/python/trunk/Include/longintrepr.h?view=markup and 长对象.c http://svn.python.org/view/python/trunk/Objects/longobject.c?view=markup:

有两组不同的参数:一组为 30 位数字, 以无符号32位整数类型存储,15位为一组 数字,每个数字存储在无符号短整型中。的价值 PYLONG_BITS_IN_DIGIT,在配置时或在 pyport.h 中定义, 用于决定使用哪个数字大小。

/* Long integer representation.
    The absolute value of a number is equal to
    SUM(for i=0 through abs(ob_size)-1) ob_digit[i] * 2**(SHIFT*i)
    Negative numbers are represented with ob_size < 0; 
      zero is represented by ob_size == 0.

    In a normalized number, ob_digit[abs(ob_size)-1] (the most significant
      digit) is never zero.  Also, in all cases, for all valid i,
        0 <= ob_digit[i] <= MASK.

    The allocation function takes care of allocating extra memory
    so that ob_digit[0] ... ob_digit[abs(ob_size)-1] are actually available.

*/

struct _longobject {
   PyObject_VAR_HEAD
   digit ob_digit[1];
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python如何表示这么大的整数? 的相关文章

随机推荐

  • 如何设置 Visual Studio 2012 使用 JavaScript 编辑器处理 asp 文件

    如何告诉 Visual Studio 2012 将经典 ASP 文件 扩展名 asp 识别为 JavaScript 我已将 asp 扩展名注册到脚本编辑器 这在 2010 年曾经起到过作用 但现在没有帮助 VS 似乎不知道脚本编辑器使用什么
  • NLTK v3.2:无法 nltk.pos_tag()

    嗨 文本挖掘冠军 我在 Windows 10 上使用 Anaconda 和 NLTK v3 2 客户端环境 当我尝试 POS 标记时 我不断收到 URLLIB2 错误 URLError
  • cakephp render-false 操作仍然回显 html 模板

    对于控制器中不需要视图的操作 我将禁用布局和模板 如下所示 this gt autoRender false 一切都很好 然而 在同一操作中 我会回显 通过 或 失败 来表明我对结果的看法 问题是一堆文本也被回显 我的 失败 或 通过 在最
  • 如何在 Crypto++ 中使用 Shamir 秘密共享类

    我尝试使用秘密共享 http www cryptopp com docs ref class secret sharing htmlCrypto 中的类 但我无法使其工作 这是我的代码 using namespace CryptoPP vo
  • SQL Server,如何设置建表后自增而不丢失数据?

    我有一张桌子table1在 SQL Server 2008 中 它有记录 我想要主键table1 Sno列是自动递增列 可以在不进行任何数据传输或表克隆的情况下完成此操作吗 我知道我可以使用 ALTER TABLE 添加自动增量列 但是我可
  • 如何固定/锁定背景图像和包含图像的 Div 的位置

    我有一个地图图像 1080x1080px 我希望它作为主体或容器 div 的背景 我需要图像始终保持固定在其位置 即使在调整浏览器窗口大小时也是如此 我在主 div 容器内有 div 这些 div 包含图像 这些图像是放置在特定位置的地图标
  • 根据标识符估算缺失值[重复]

    这个问题在这里已经有答案了 我喜欢根据某个变量与匹配索引配对的值来填充其缺失值 示例 第一列是索引 第二列是值 mat lt cbind c 1 1 2 2 3 3 4 4 4 c 4 3 NA 2 4 NA 3 8 NA 1 2 NA N
  • tomcat下指定自定义logging.properties

    我想在一个tomcat下有2个web应用程序 这2个项目应该有自己的logging properties 我知道如果您将logging properties放入war文件中 这是可能的 但我想指定一个自定义loggin properties
  • 将文件上传到电子表格时显示“UiApp 已被弃用。请改用 HtmlServices”

    这件事是昨天才发生的 我使用这个脚本将文档上传到电子表格的单元格 直到今天我遇到了一个错误 UiApp 已被弃用 请改用 HtmlService 我怎样才能解决这个问题 My code upload document into google
  • 获取图表中走过的最长路线

    我有一组相互连接的节点 我有以下节点网络 这里0是起点 我想遍历尽可能多的节点 并且一个节点只遍历一次 另外 在从 0 到目标节点的旅程中 我只想有一个奇数编号的节点 如 1 3 5 7 现在我需要找出从起始位置 0 开始可以行驶的最长路线
  • FastAPI 以串行方式而不是并行方式运行 api 调用

    我有以下代码 import time from fastapi import FastAPI Request app FastAPI app get ping async def ping request Request print Hel
  • 在常量表达式中调用“static constexpr”函数是...错误? [复制]

    这个问题在这里已经有答案了 我有以下代码 class MyClass static constexpr bool foo return true void bar noexcept foo 我希望从那时起foo is a static co
  • 使用 Ruby 测试单元在一个脚本中并行运行多个测试

    我在一个 ruby 脚本中有 4 个测试 我使用命令运行 ruby test rb 输出看起来像 Loaded suite test Started Finished in 50 326546 seconds 4 tests 5 asser
  • Excel自动调整合并单元格的高度

    我在 excel 中遇到了一个小问题 我没有使用 Excel 宏的经验 如果您能提供一些帮助 我将不胜感激 我试图找到一个宏来调整合并单元格的高度以适应其内容 自动地 我发现可以对多列中的单元格执行此操作 但不能对多行执行此操作 而且也不会
  • 通过 JAVA 的 LDAP 无需提供密码

    在 C 中 我编写了下面的代码来连接到 LDAP 服务器并查询相同的内容 String ldapUrl LDAP DirectoryEntry entry new DirectoryEntry ldapUrl DirectorySearch
  • Rails 3 - 在respond_to中设置文件名

    这看起来应该很简单 但我似乎找不到直接的答案 我添加了 csv mime 类型 以下内容似乎有效 except下载的文件始终命名为 report csv 在我的控制器中 def report respond to do format for
  • 如何使用gunicorn在heroku上提供django静态文件

    我在 Django 中有一个应用程序 我将其部署在 heroku 上 但我无法在服务器上提供静态文件 下面是我的代码和设置 设置 py DEBUG True TEMPLATE DEBUG DEBUG import os PROJECT PA
  • 是否可以通过 JavaScript 获取对评论元素/块的引用?

    这听起来有点疯狂 但我想知道是否可以引用注释元素 以便我可以用 JavaScript 动态地将其替换为其他内容 div div div div 在上面的页面中 我可以引用评论块并将其替换为本地存储中的某些内容吗 我知道我可以有一个 div
  • 如何恢复 SonarQube 的管理员密码

    我忘记了 SonarQube 的管理员密码 谷歌搜索并发现该值crypted password应更新为8b1254c1c684c5dc904f3f174cea1cacbde4ad84这会将密码重置为admin 但我仍然无法登录 有什么建议吗
  • python如何表示这么大的整数?

    在C C 和Java中 整数有一定的范围 我在 Python 中意识到的一件事是我可以计算非常大的整数 例如pow 2 100 相同的等效代码 在 C 语言中 pow 2 100 显然会导致溢出 因为在 32 位体系结构中 无符号整数类型的