小数在数字系统之间的转换

这个在线计算器有助于将一个数字系统中的小数转换成其他数字系统中的小数

我做了几个数字系统转换计算器(从最简单的到更高级的:将十进制数转换为其他符号从十进制数字系统转换任意库之间的转换 后,用户常问,我们应该怎么转换小数?所以,我决定做另一个计算器,在不同的数字系统之间转换小数。

像往常一样,我把一些理论放在计算器下面

PLANETCALC, 小数在数字系统之间的转换

小数在数字系统之间的转换

输入数字系统库
目标数字系统库
小数点后的数字: 8
目标数
 
源数(十进制)
 
目标数(十进制)
 
转换错误(十进制)
 
可能的最大转换错误(十进制)
 

我曾经认为转换小数是困难的,但事实证明转换还是相对容易理解的。我们需要记住的是我们处理的是位置数字系统。

例如,对于十进制数6.125,你可以这样写:

6.125=6*10^0 + 1*10^{-1}+2*10^{-2}+5*10^{-3}=6*1+\frac{1}{10}+\frac{2}{100}+\frac{5}{1000}

很容易理解,不是吗?对于任何其他的位置数字系统来说都是一样的。让我们以二进制系统和小数二进制数110.001为例。你可以这样写:

110.001=1*2^2 + 1*2^1+0*2^0+0*2^{-1}+0*2^{-2}+1*2^{-3}=1*4+1*2+0*1+\frac{0}{2}+\frac{0}{4}+\frac{1}{8}=6+\frac{1}{8}=6.125

是的,这是我编的。二进制110.001是十进制6.125。很容易,不是吗?

但是请注意,我们的分数和分母是不同的,所以我们不能总是在不同的数字系统中保持相同的精度。

我再举个例子,观察十进制的0.8

0.8=0+\frac{8}{10}.

对于十进位数制来说,一切都很容易。但是对于二进制数制,我们有个问题,请看下面

0+\frac{1}{2}+\frac{1}{4}+\frac{0}{8}+\frac{0}{16}+\frac{1}{32}+\frac{1}{64}+...=0 + 0.5 + 0.25+0.03125+0.015625+...=0.796875+...

我们可以继续下去,但即使是现在,我们也可以看到十进制的0.8是二进制的0.11001100...(还有很多位)。事实上,它是一个周期性的数字,周期为1100,所以我们不会找到准确的二进制数字来精确表达0.8。一直都是1100。

这就是为什么小数的转换经常给我们带来转换误差。误差取决于小数点后我们决定使用的数字位数。例如,让我们将十进制的0.8转换为二进制,并在小数点之后保留6位数字。我们会得到0.110011。但它不是十进制的0.8;事实上,但它是十进制的0.796875;区别是0.003125。这就是我们将十进制0.8转换为二进制时,保留6位小数的误差。

最右边的数字的值被称为分辨率或者精度,定义了可能最小的非零数,可以用这个数字来写。在我们的例子里,它是2^{-6}=0.015625 。在这种情况下,最大可能的转换误差是它的二分之一,即0.0078125。请注意,与最大可能的误差相比,我们对0.8的转换误差并不严重。

这就是全部。

URL 复制到剪贴板
PLANETCALC, 小数在数字系统之间的转换

评论