将重复的二进制数转换为十进制

时间:2019-05-30 14:34:15

标签: floating-point binary

我如何将0.1011111 ....或0.10(1)表示为分数a / b? a和b为整数。

我正在尝试这种方法

x = 0.10(1) x = 10.(1)/ 4

现在y = 10.(1)

2y = 101.(1)

表示2y-y = 91 y = 91

x = 91/4 但是a = 91&b = 4是错误的。

我该如何解决呢?

3 个答案:

答案 0 :(得分:1)

您需要观察数字仍然是二进制的。因此,以十进制表示,y的整数部分为2,而2y的整数部分为5,因此差值为y=3

请注意,在二进制0.1(1)=1中,就像在十进制0.9(9)=1中一样。因此,以另一种方式,x恰好是0.11二进制,即1/2+1/4=3/4

答案 1 :(得分:1)

您可以按照以下步骤进行操作:

x =(0.1011111) 2

用十进制表示上述二进制项可以给我们:

x = 1/2 1 + 0/2 2 + 1/2 3 + 1/2 4 + ...)
x = 1/2 + 1/2 2 *(1/2 1 + 1/2 2 + 1/2 3 + ...)

如果忽略上述等式中用粗体标出的术语,则括号中的术语变为 x ,因此可以说括号中的术语等于(x + 1/2 2

x = 1/2 + 1/2 2 *(x + 1/2 2
x = 1/2 + x / 4 + 1/16

解决上述方程式

3x / 4 = 9/16
x = 3/4

答案 2 :(得分:0)

这是重复模式频繁出现的情况下对该问题的概括。

假设x = 0.001100110011 ...,其中模式0011无限重复。

让a为模式(x为0011),k为长度(x为4)。

x = a×2 ^ -k + a×2 ^ -2k + ...
  = a×2 ^ -k×∑ i = 0 (2 ^ -k)^ i < br />   = a×2 ^ -k×lim n→∞(1-(2 ^ -k)^ n)/(1-2 ^ -k)
因为x是具有2 ^ k比率的几何序列的总和。

当n变为∞时,(2 ^ -k)^ n变为零,我们有了
x = a×2 ^ -k /(1-2 ^ -k)= a /(2 ^ k-1)

如果x = 0.11111 ...,a = 1,k = 1和x = 1 /(2-1)= 1,我们得到的结果已经由LutzL提出(以一种简单得多的方式!),该结果回答了原始问题。

但是我们可以使用任何重复模式来解决更复杂的问题。
例如,如果x = 0.001100110011 ...,则a = 0011 = 3且k = 4。
因此x = 3 /(2 ^ -4-1)= 1/5 = 0.2

立即重复出现其中重复模式前面有非重复序列的情况。