gpt4 book ai didi

c - N个十进制数需要多少字节

转载 作者:太空狗 更新时间:2023-10-29 16:46:13 25 4
gpt4 key购买 nike

我有一个任意长度的字符串,表示一个十进制整数值,并将这个字符串转换为一个普通二进制格式(不是 BCD,超过 64 位)的大整数。

我正在寻找一个很好的简单估计,在不使用浮点运算的情况下,有多少字节可以确定地保存 N 个十进制数字。

最佳答案

不使用浮点运算:对于 N十进制数字,你需要

(98981 * N) / 238370 + 1

字节。 98981/238370 是 log(10)/log(256) 的一个很好的有理近似值(从上面) (第 9th 收敛),整数除法截断,因此加 1。公式对于 N < 238370 是紧的, 表示 10^N - 1 所需的字节数正是由此给出的,它高估了N 238370 的倍数并且非常大 N .如果你不太害怕分配太多奇数字节,你也可以使用 (267 * N) / 643 + 1 , (49 * N) / 118 + 1 , (5 * N) / 12 + 1或者,浪费大约 10% 的空间,(N + 1) / 2 .

正如@Henrick Hellström 指出的那样,在 Delphi 中必须使用 div整数除法运算符(遗漏了 delphi 标记)。

关于c - N个十进制数需要多少字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9443236/

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