You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

循环二进制数转十进制:如何将0.10(₁)₂表示为分数a/b?

嘿,你这里踩了个很典型的坑——把二进制运算当成十进制来算了!2y - y的结果可不是十进制的91,得按二进制的规则来运算才行。下面给你两种清晰的正确解法:

正确解法:二进制循环小数转分数

方法一:二进制位运算推导

  • 设 x = 0.10(₁)₂,也就是 0.1011111...₂(末尾无限重复的1是循环节)。
  • 先把小数点移到循环节的起始位置:循环节从第3位小数开始,我们乘以 2² = 4(对应二进制的100),得到:
    4x = 10.(₁)₂(即二进制的10.1111...)
  • 令 y = 10.(₁)₂,因为循环节长度是1,我们乘以进制数2,得到:
    2y = 101.(₁)₂(即二进制的101.1111...)
  • 用 2y - y 抵消循环部分:
    二进制减法中,小数部分的循环(₁)₂完全抵消,整数部分101₂ - 10₂ = 11₂,所以2y - y = 11₂
  • 把11₂转换成十进制是3,因此y = 3。代入4x = y,可得x = 3/4。

方法二:十进制等比数列求和推导

我们也可以把二进制数拆成十进制分数的和,直接计算:

  • 把0.10(₁)₂拆分为:0.1₂ + 0.001₂ + 0.0001₂ + 0.00001₂ + ...
  • 转换成十进制分数:
    • 0.1₂ = 1/2
    • 0.001₂ = 1/8,0.0001₂ = 1/16,0.00001₂ = 1/32……这是首项为1/8、公比为1/2的等比数列
  • 用等比数列求和公式S = 首项 / (1 - 公比),计算循环部分的和:(1/8) / (1 - 1/2) = 1/4
  • 加上前面的1/2,总和为:1/2 + 1/4 = 3/4

两种方法都得到了相同的结果,说明这个答案是正确的。

内容的提问来源于stack exchange,提问作者crytek12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:53:11