免费二进制小数转换器

DEC

0.37510 = 0.0112

0.0112 = 0.37510

输入值进行转换

计算机完全以二进制位(0 和 1)运行。虽然将整数从十进制转换为二进制很简单,但小数部分的处理则截然不同。二进制小数转换器(集完整的十进制转二进制小数转换器与二进制转十进制小数转换器于一体)不仅能执行这些转换,还能揭示为何许多十进制小数无法在计算机的有限内存中精确存储。

什么是二进制小数?

正如十进制小数使用十的负幂次表示 0 到 1 之间的数,二进制小数使用二的负幂次。二进制小数点将整数部分与小数位隔开。例如,0.10120.101_2 表示:

0.1012=1×2−1+0×2−2+1×2−3=12+04+18=0.62510.0.101_2 = 1 \times 2^{-1} + 0 \times 2^{-2} + 1 \times 2^{-3} = \frac{1}{2} + \frac{0}{4} + \frac{1}{8} = 0.625_{10}.

二进制小数计算器利用这一原理,快速返回任一方向的转换结果。

将十进制小数转换为二进制(小数转二进制)

要获得十进制小数的二进制表示,请遵循以下迭代过程:

  1. 将当前小数部分乘以 2。
  2. 结果的整数部分(0 或 1)成为下一个二进制数位。
  3. 丢弃整数部分,继续处理新的小数部分。
  4. 当小数部分变为 0 或收集到足够多的位数时停止(工具可让您指定位数)。

示例: 将 0.2912100.2912_{10} 转换为二进制。

  • 0.2912×2=0.58240.2912 \times 2 = 0.5824 → 数位 0,余数 0.58240.5824
  • 0.5824×2=1.16480.5824 \times 2 = 1.1648 → 数位 1,余数 0.16480.1648
  • 0.1648×2=0.32960.1648 \times 2 = 0.3296 → 数位 0,余数 0.32960.3296
  • 0.3296×2=0.65920.3296 \times 2 = 0.6592 → 数位 0,余数 0.65920.6592
  • 0.6592×2=1.31840.6592 \times 2 = 1.3184 → 数位 1,余数 0.31840.3184
    ……依此类推。

二进制小数变为 0.01001…20.01001\ldots_2。除非十进制小数恰好分母是 2 的幂,否则这个序列会无限继续。

十进制转二进制小数转换器自动完成这些步骤;您只需输入小数值并选择所需的位数。结果会截断(而非舍入)到指定位数。

将二进制转换为十进制(二进制小数转十进制)

要读取二进制小数的十进制值,请根据每一位的位置将每个 1 的贡献相加。小数点的左边第一位权重为 2−12^{-1},下一位为 2−22^{-2},以此类推。

示例: 将 0.101120.1011_2 转换为十进制。

0.10112=1×2−1+0×2−2+1×2−3+1×2−4=0.5+0+0.125+0.0625=0.687510.\begin{aligned} 0.1011_2 &= 1 \times 2^{-1} + 0 \times 2^{-2} + 1 \times 2^{-3} + 1 \times 2^{-4} \\ &= 0.5 + 0 + 0.125 + 0.0625 = 0.6875_{10}. \end{aligned}

二进制转十进制小数转换器可处理您输入的任何二进制小数,并立即显示其十进制等值。

二进制小数何时精确?

只有当原分数(最简形式)的分母是 2 的幂时,才存在有限的二进制小数。如果分母包含除 2 以外的任何质因数,则二进制表示是一个无限循环序列。例如:

  • 精确: 1/2=0.121/2 = 0.1_2,3/8=0.01123/8 = 0.011_2,7/16=0.011127/16 = 0.0111_2。
  • 不精确(循环): 1/31/3,1/5=0.210=0.0011‾21/5 = 0.2_{10} = 0.\overline{0011}_2,1/10=0.110=0.00011‾21/10 = 0.1_{10} = 0.0\overline{0011}_2。

当计算机存储这样的循环二进制小数时,它会截断到固定位数(例如,单精度 23 位,双精度 52 位)。结果值略小于真实的十进制小数值,从而引入微小误差。

对于 0.20.2,8 位截断得到 0.199218750.19921875,误差为 0.0007810.000781。使用 23 位时,误差降至 7.15×10−87.15 \times 10^{-8}——非常微小但仍然非零。这种固有限制是软件中许多“浮点”意外现象的根源。

如何使用二进制小数转换器

该工具包含两种主要模式:

  • 十进制转二进制: 输入任意十进制小数(例如 0.625),选择输出的小数位数。小数转二进制转换器返回截断至该长度的二进制等值。
  • 二进制转十进制: 提供一个二进制小数(例如 0.1010),工具显示其十进制值。

您可以通过自定义字段调整位数;刷新页面可恢复默认值。由于转换器仅进行截断,如果分数需要无限展开,您应注意二进制输出可能与输入不完全相等。

无论您是在学习数制、使用嵌入式系统,还是单纯好奇计算机如何处理小数,这个二进制小数计算器都提供了一种实用且具有教育意义的方式来探索二进制小数。

常见问题

1. 如何使用十进制转二进制小数转换器?

选择十进制转二进制模式,输入十进制小数(例如 0.625),选择所需的小数位数,工具将输出截断到该长度的二进制等值。

2. 为什么 0.2 无法精确表示为二进制?

在二进制中,一个分数只有在其最简形式的分母是 2 的幂时才能精确表示。0.2 等于 1/5,其分母 5 不是 2 的幂,因此其二进制展开是一个无限循环序列,截断时会产生微小误差。

3. 二进制小数转换器会对结果进行舍入还是截断?

转换器将二进制小数截断到指定位数,不进行舍入。这意味着当真实二进制展开无限时,结果可能略小于精确值。

4. 如何手动将二进制小数转换为十进制?

将二进制小数点后的每一位乘以相应的负幂次(2^{-1}、2^{-2}……),然后求和。例如,0.1101_2 = 1×2^{-1} + 1×2^{-2} + 0×2^{-3} + 1×2^{-4} = 0.8125。

使用方法

  1. 选择转换方向(十进制 → 二进制 或 二进制 → 十进制)。
  2. 在输入字段中输入一个小数(例如,十进制输入0.375,二进制输入0.011)。
  3. 选择位数,然后点击“转换”查看结果。