在二进制表示法中,小数点后面数字的含义是什么?
我有这个例子,如何从一个基地10号码转换为IEEE 754浮点表示
Number: 45.25 (base 10) = 101101.01 (base 2) Sign: 0 Normalized form N = 1.0110101 * 2^5 Exponent esp = 5 E = 5 + 127 = 132 (base 10) = 10000100 (base 2) IEEE 754: 0 10000100 01101010000000000000000
除了一段话,这对我来说是有意义的:
45.25 (base 10) = 101101.01 (base 2)
45是101101在二进制,这没关系,但他们是如何获得0.25为0.01?
您可以通过反复乘以新的基数(在这种情况下,新的基数是2)将小数点后的部分转换为另一个基数,如下所示:
0.25 * 2 = 0.5
– >第一个二进制数字是0(取整数部分,即小数点前的部分)。
继续乘以小数点后的部分:
0.5 * 2 = 1.0
– >第二个二进制数字是1(再次取整数部分)。
这也是我们停止的地方,因为小数点后面的部分现在是零,所以没有什么可以相乘的了。
因此小数部分的最终二进制表示为:0.01 2 。
编辑:
值得注意的是,即使以10为底的小数部分开始,二进制表示也是无限的。例如:将0.2 10转换为二进制:
0.2 * 2 = 0.4 -> 0 0.4 * 2 = 0.8 -> 0 0.8 * 2 = 1.6 -> 1 0.6 * 2 = 1.2 -> 1 0.2 * 2 = ...
所以我们结束了:0.001100110011 … 2 。
如果二进制表示最终是无限的,那么使用这种方法很容易看到。
简单的地方价值。 在基地10,你有这些地方:
… 10 3 10 2 10 1 10 0 。 10 -1 10 -2 10 -3 …
…数千,数百,数十个。 十分之一,百分之一,千分之一…
同样,在二进制(基2)你有:
… 2 3 2 2 2 1 2 0 。 2 -1 2 -2 2 -3 …
四分之一,二分之一 一半,宿舍,八分之一…
所以之后的第二个地方.
在二进制中的单位是2 -2 ,众所周知的单位是1/4(或者是0.25)。
考虑到它们以完全相同的方式工作,“小数”(小数位)在其他基数中是令人惊讶的不直观的。
base 10 scinot 10e2 10e1 10e0 10e-1 10e-2 10e-3 weight 100.0 10.0 1.0 0.1 0.01 0.001 value 0 4 5 .2 5 0 base 2 scinot 2e6 2e5 2e4 2e3 2e2 2e1 2e0 2e-1 2e-2 2e-3 weight 64 32 16 8 4 2 1 .5 .25 .125 value 0 1 0 1 1 0 1 .0 1 0
如果我们从45.25开始,那比32更大,所以我们添加一个二进制数1,然后减去32。
我们剩下13.25,这比16小,所以我们添加一个二进制0。
我们剩下13.25,这比8大,所以我们加一个二进制1,然后减去8。
我们剩下的是05.25,它大于/等于4,所以我们添加一个二进制1,然后减去4。
我们剩下的是01.25,小于2,所以我们添加一个二进制0。
我们剩下的是01.25,这比1大,所以我们加一个二进制数1,然后减1。
用整数,我们剩下零,所以我们停下来。 但:
我们留下了00.25,这比0.5小,所以我们添加一个二进制0。
我们留下了00.25,这是大于/等于0.25,所以我们添加一个二进制1,并减去0.25。
现在我们有零,所以我们停止(或不,你可以继续下去,如果你想要永远计算零)
请注意,并非所有小数点的“简单”数字总是达到零停止点。 0.1(十进制)转换为基数2,是无限重复的:0.0001100110011001100110011 …但是,二进制中的所有“简单”数字总是可以很好地转换为基数10。
你也可以用小数(2.5),无理数(pi)或甚至虚数(2i)的基数来做同样的处理,除了基数不能在-1和1之间(包括-1和1)。
2.000 10 = 2 +1 = 10.000 2
1.000 10 = 2 +0 = 01.000 2
0.500 10 = 2 -1 = 00.100 2
0.250 10 = 2 -2 = 00.010 2
0.125 10 = 2 -3 = 00.001 2
分数基数2是.1 = 1 / 2,0.01 = 1/4。 …
想想这样
(点)2 ^ -1 2 ^ -2 2 ^ -3等
所以
。 0/2 + 1/4 + 0/8 + 0/16等
你可以把0.25看作1/4。
(以2为底)将小数点左移一位,同样以10除(10位)移动小数点左移一位。 一般除以M(M为底数)小数点左移一位。
所以
base 10 base 2 -------------------------------------- 1 => 1 1/2 = 0.5 => 0.1 0.5/2 = 1/4 = 0.25 => 0.01 0.25/2 = 1/8 = 0.125 => 0.001 . . .
等等