-5

如何将十进制数“18.25”转换为二进制?我被小数点 0.25 弄糊涂了。

4

2 回答 2

2

就像你反复将这个 18 除以 2 来形成它的十进制表示一样,你需要做相反的事情来将数字的小数部分转换为二进制。您需要将该数字的小数部分重复乘以 2,直到它给出一个独立的数字。第一次乘法的结果(乘积)将作为第二次乘法的输入,并一直持续到我们达到一个停滞的稳定整数值。


因此,在您的情况下,18.25 的小数部分是 0.25。

让我们先将它乘以 2。

0.25*2=0.5   // 0

0.5*2=1.0    // 1

当我们最终将产品作为独立整数出现时,Hunt 结束。

此外,18 的十进制到二进制转换是(10010)base 2. 正如问题中提到的那样,您可以轻松地计算出这一点。

因此,18.25 的十进制表示将是(10010.01)base 2--- 看,顺序为 01,与我们从下到上遍历的数字不同!

我希望很清楚。

于 2014-08-10T03:47:15.880 回答
0
with recursiveCTE(num) as (
  select &EnterNum num from dual
  union all
  select trunc(num/2) from recursiveCTE
  where trunc(num/2)> 0
),
ref as (SELECT num, mod(num, 2) bin_remainder from recursiveCTE)
select reverse(to_char(replace(wm_concat(bin_remainder), ','))) binary_num from ref;
于 2016-06-16T06:05:22.927 回答