ol.*_*ol. 10 processor biginteger cpu-architecture
据我所知,BigInts通常在大多数编程语言中实现为包含数字的数组,例如:当添加其中两个时,每个数字都是一个接一个地添加,就像我们从学校知道的那样,例如:
246
816
* *
----
1062
Run Code Online (Sandbox Code Playgroud)
其中*表示存在溢出.我在学校这样学习,所有BigInt添加函数我已经实现了类似于上面例子的工作.
所以我们都知道我们的处理器只能本地管理从0到2^32/的整数2^64.
这意味着大多数脚本语言为了高级并提供具有大整数的算术,必须实现/使用BigInt库,这些库使用整数作为上面的数组.但当然这意味着它们将比处理器慢得多.
所以我问自己的是:
它可以像任何其他BigInt库一样工作,只是(很多)更快,更低一级:处理器从缓存/ RAM中取一个数字,添加它,然后再将结果写回来.
对我来说似乎是一个好主意,为什么不是那样的?
有太多的问题需要处理器处理大量的东西而不是它的工作.
假设处理器DID具有该功能.我们可以设计一个系统,我们知道给定BigInt使用了多少字节 - 只需使用与大多数字符串库相同的原理并记录长度.
但是如果BigInt操作的结果超出了保留的空间量会发生什么?
有两种选择:
问题是,如果它确实1),那么它是无用的 - 你必须事先知道需要多少空间,这就是你想要使用BigInt的部分原因 - 所以你不受那些限制的东西.
如果它确实2),那么它将不得不以某种方式分配该内存.内存分配不是以相同的方式在操作系统上完成,但即使它是,它仍然必须更新所有指向旧值的指针.它如何知道什么是指向该值的指针,以及只是包含与所讨论的内存地址相同的值的整数值?
二进制编码的十进制是字符串数学的一种形式.英特尔x86处理器具有直接BCD关节操作的操作码.
| 归档时间: |
|
| 查看次数: |
803 次 |
| 最近记录: |