计算算术 - 8 位数字需要多少位

Computational arithmetic - how many bits exactly for 8 digit number needed

您需要多少字节(以及多少位)来表示数字 99999999? 我需要知道这一点:我们有一个计算器,最简单的,最多可以容纳 8 位数字,即从 0 到 99999999(让我们忘记负数,除非您愿意将其包含在您的答案中)。

我们需要多少 bits/bytes 来存储从 0 到 99999999 的值?

感谢您的帮助,如果可以的话,请提供理论背景和任何计算。 非常感谢!

简答为 27 位,或 4 个字节覆盖 32 位。 更长的答案是:你必须代表 10^8 个值,所以 log2(10^8) 大约是 26.575424759。 Ceil 这个值,你会看到 27。Ceil 27 有 8 位组,你有 32 位,4 字节

因为有8个数字,每个数字可以有10个值(0, 1, …, 9),所以可表示数字的总数是10^8。为了用二进制表示这么多数字,我们必须有 N 个数字,这样只要将两个值 (0, 1) 中的一个分配给每个位置,就至少可以得到与十进制一样多的可表示数字。即我们要求解

2^N >= 10^8

我们可以取两边的base-2 log得到

N >= log_2(10^8) = 8 * log_2(10)

在这一点上,希望你有一个方便的计算器来计算 log_2(10)。请注意,这等于 log_10(10)/ log_10(2) = 1/log_10(2),如果您的计算器默认以 10 为基数计算对数。答案出来了:

N >= ~26.58

满足此条件的N的最小整数值为27,所以需要27位。