gpt4 book ai didi

biginteger - 为什么我的处理器没有内置 BigInt 支持?

转载 作者:行者123 更新时间:2023-12-04 02:51:18 26 4
gpt4 key购买 nike

据我所知,BigInts 通常在大多数编程语言中实现为包含数字的数组,其中,例如:当添加其中的两个时,每个数字都会一个接一个地添加,就像我们在学校知道的那样,例如:

 246
816
* *
----
1062

其中 * 表示存在溢出。我是在学校以这种方式学习的,并且我实现的所有 BigInt 添加函数的工作类似于上面的示例。

所以我们都知道我们的处理器只能本地管理从 0 到 2^32 的整数。/ 2^64 .

这意味着大多数脚本语言为了成为高级语言并提供大整数算术,必须实现/使用 BigInt 库,这些库将整数作为数组处理,就像上面一样。
但这当然意味着它们将比处理器慢得多。

所以我问自己的是:
  • 为什么我的处理器没有内置的 BigInt 函数?

  • 它会像任何其他 BigInt 库一样工作,只是(很多)更快,并且级别较低:处理器从缓存/RAM 中获取一位数字,添加它,然后再次将结果写回。

    对我来说似乎是个好主意,那么为什么没有这样的东西呢?

    最佳答案

    有太多的问题需要处理器处理大量不是它的工作的东西。

    假设处理器确实具有该功能。我们可以计算出一个系统,在该系统中我们知道给定的 BigInt 使用了多少字节——只需使用与大多数字符串库相同的原理并记录长度。

    但是如果 BigInt 操作的结果超过了保留的空间量会发生什么?

    有两种选择:

  • 它会环绕在它所拥有的空间内
  • 它会使用更多的内存。

  • 问题是,如果它做了 1),那么它就没用了——你必须事先知道需要多少空间,这就是你想要使用 BigInt 的部分原因——所以你不受这些限制事物。

    如果它做了 2),那么它将不得不以某种方式分配该内存。跨操作系统的内存分配不是以相同的方式完成的,但即使是这样,它仍然必须更新所有指向旧值的指针。它如何知道什么是指向该值的指针,什么是包含与所讨论的内存地址相同的值的简单整数值?

    关于biginteger - 为什么我的处理器没有内置 BigInt 支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2624973/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com