假设我们有一些任意正数x
。
是否有一种方法可以用二进制表示其倒数,或x
的倒数是1/x
- 如何用二进制表示?
e.g。 x=5 //101
x
的倒数是1/x
,它的二进制形式是......?
答案 0 :(得分:6)
您会发现它与十进制形式相同:long division。
没有捷径只是因为你在另一个基地,虽然长划分明显更简单。
Here是应用于二进制数的长除法的一个非常好的解释。
虽然,只是为了让你知道,今天的机器上的大多数浮点系统为你做了很快的分工。
答案 1 :(得分:1)
一般来说,“以二进制表示”任意分数的唯一实用方法是作为一对整数,分子和分母 - “浮点”,最常用(和硬件支持)的非二进制表示整数,可以精确地表示那些分母,其分母(当分数减少到最小项时)是2的幂(当然,只有当分配给表示的固定位数足够我们的数字时我希望代表 - 但是,后者的限制也适用于任何固定大小的二进制表示,包括最简单的二进制表示。(
答案 2 :(得分:1)
0.125 = 0.001b
0.0625 = 0.0001b
0.0078125 = 0.0000001b
0.00390625 = 0.00000001b
0.00048828125 = 0.00000000001b
0.000244140625 = 0.000000000001b
----------------------------------
0.199951171875 = 0.001100110011b
如果你想要更高的准确性/精确度,请自己解决。
答案 3 :(得分:1)
另一种形式的乘法逆利用了大多数计算机上实现的整数运算的模数性质;在你的情况下32位值 11001100110011001100110011001101(-858993459 signed int32或3435973837 unsigned int32)乘以5等于1(mod 4294967296)。只有与模数运算的2的幂相互作用的值才有这样的乘法逆。
答案 4 :(得分:0)
答案 5 :(得分:0)
如果您只需要二进制分数的前几位,这个技巧将为您提供这些位:(2 << 31) / x
。但是不要在任何真正的软件项目中使用这个技巧。 (因为它是粗略,不准确和明显错误的表示价值的方式)