【发布时间】:2018-05-24 08:28:00
【问题描述】:
Rust 中 num 板条箱中的 BigInt 或 BigUint 的大小是否没有限制?我看到在Java 中,它的长度受到整数Integer.MAX_VALUE 的上限的限制,因为它存储为int 的数组。
我确实浏览了它的文档,但无法真正从中推断出我的答案
一个 BigUint 类型的值 BigUint { data: vec!(a, b, c) } 表示一个 数字(a + b * big_digit::BASE + c * big_digit::BASE^2)。
big_digit::BASE 被定义为
pub const BASE: DoubleBigDigit = 1 << BITS
BITS 又是 32
那么 BigInt 是否在内部表示为 (a + b * 64 + c * 64^2)?
【问题讨论】:
-
无论如何,这是一个理论上的限制,因为我看不到像
2^u64::MAX这样大的数字的任何用法 -
BigInt 被表示为
(a + b * 2^32 + c * (2^32)^2),所以限制相当大
标签: rust biginteger