十进制系统中每位数多少位

use*_*592 31 numbering

我将教一小群人关于计算中的编号系统,并想知道十进制系统中每个数字有多少位,例如:

  • 十六进制(基数 16) - 4 位
  • 八进制(基数 8) - 3 位
  • 二进制(基数 2) - 1 位
  • 十进制(以 10 为底) - ?

Eug*_*eck 100

您正在寻找的是 10 的基于 2 的对数,这是一个大约 3.32192809489 的无理数....

十进制数字不能使用整数位这一事实是为什么许多在十进制系统中易于表达的分数(例如 1/5 或 0.2)是不可能的(不难:真的)的根本原因不可能)用二进制表示。这在评估浮点运算中的舍入误差时很重要。


gro*_*taj 21

换句话说,在这些系统中,单个数字包含多少信息。

对于基数 2、基数 4、基数 8、基数 16 和其他 2 N 个基数,答案是显而易见的,因为在基数 2 N 中,每个数字都可以精确地表示为 N 个数字。

给定 2 N如何得到N?好吧,您使用基于 2 的对数,它是幂的倒数。

  • log 2 2 = 1(基数为 2 的每个数字 1 位)
  • log 2 4 = 2(以 4 为底的每位数 2 位)
  • log 2 8 = 3(以 8 为基数每数字 3 位)
  • log 2 16 = 4(以 16 为底的每位数 4 位)

不是 K 的幂的数字的基于 K 的对数不是基数。特别是:

  • 日志2 10 = 3.321928094887362347870319429489390175864831393024580612054…

这个数字可能看起来很混乱,但它实际上有一些用途。例如,它是单个十进制数字的

但是,对于您的情况,我认为此值没有任何用处。@Christian 的回答很好地解释了原因。


小智 8

关于位的主题:

我很抱歉地说这个问题被误导了。你不会以那种方式使用位。位是一个二进制数字。您可以将十进制数 10 转换为二进制 1010 (8+2),因此您需要 4 位来表示十进制值 10。


2 的幂

你陷入了一个陷阱,以二进制(2)、八进制(8)和十六进制(16)为例,因为这些都是 2 的幂,因此你可以从位的角度来考虑它们,而 10 不是 2 的幂,所以它不能像那样很好地工作。

  • 这个问题没有误导。在信息论的主题中,以这种方式谈论比特是完全正常的。然后 Eugen Rieck 的回答是一个很好的答案。 (19认同)
  • 我建议你提到 BCD(二进制编码的十进制),它在电子学中通常用 4 位表示。实际上,用于表示十进制数的位数通常为 4,但这取决于实现。 (2认同)
  • ln(10)/ln(2) 是理论上的答案。4 位是可能的实现答案。 (2认同)
  • @davidmneedham 不,大多数数字都以二进制形式存储。BCD 用于罕见的特殊用途,但大多数编码是整数或浮点十进制。在这些系统中,日志答案是正确的,它给出了存储给定十进制长度(向上取整)的所有数字的最少位数,并解释了为什么给定位数不存储固定数量的十进制数字。 (2认同)

小智 7

BCD - 二进制编码的十进制使用每位数 4 位,与十六进制相同。

https://en.wikipedia.org/wiki/Binary-coded_decimal