如何将十进制数“18.25”转换为二进制?我对小数点感到困惑.25。
答案 0 :(得分: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顺序不同于我们从下到上遍历的数字!
我希望很清楚。
答案 1 :(得分: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;