逐位逼近法计算对数的小数部分
逐位逼近法(Bit-by-Bit Approximation)是一种通过 迭代和位操作 高效计算数学函数(如对数、平方根等)的方法。它特别适用于 不支持浮点运算的环境(如区块链智能合约),因为所有计算均通过 整数乘法、位移和比较完成。
本文只介绍其数学推导。
假设我们要计算,显然其结果是小于1的,接下来我们来推导其结算过程。
假设0.b1b2b3b4=,这里的0.b1b2b3b4是一个二进制的数字也就是说
两边同时乘以2得到b1.b2b3b4=
也就是说b1.b2b3b4=
由于1.44< , 所以b1.b2b3b4<1,得出b1=0
继而得出0.b2b3b4=
继续两边同时乘以2得出:b2.b3b4==
<2.0736所以b2.b3b4>1,得出b2=1
接下来1.b3b4=
也就是说=2.0736 ====>
,我们两边同时除以2得到
0.b3b4=
继续前面的步骤:
b3.b4= 也就是说b3=0
接下来按照前面的计算b4也为0
也就是说的结果约为二进制的0.01也就是十进制的0.25