Python中的复合乘法器和除法器

时间:2014-02-03 16:27:44

标签: python math

如果我递归3,2002十四次,我会0.1953125

(((((((((((((3200/2)/2)/2)/2)/2)/2)/2)/2)/2)/2)/2)/2)/2)/2 = 0.1953125

如果我按0.1953125递归2次,我得到3,200

(((((((((((((0.1953125*2)*2)*2)*2)*2)*2)*2)*2)*2)*2)*2)*2)*2)*2 = 3,200

我正在尝试找到执行此操作的数学函数的术语以及如何在Python中实现它

3 个答案:

答案 0 :(得分:3)

>>> 3200.0 / 2**14
0.1953125
>>> 
>>> 0.1953125 * 2**14
3200.0

**表示Python中的 power ,就像在Fortran中一样。

请注意(如果您只使用数字2),您也可以获得2 x 并按位移位:

>>> 3200.0 / (1 << 14)
0.1953125
>>> 
>>> 0.1953125 * (1 << 14)
3200.0

答案 1 :(得分:1)

它的幂函数:3200 /(2 ^ 14)= 0.1953125和0.1953125 *(2 ^ 14)是3200

答案 2 :(得分:1)

你的第一个等式等于

3200/(2*2*2*2*2*2*2*2*2*2*2*2*2*2)

因为乘法是associative(即,parens并不重要)

同样(甚至更容易)你的第二个等式是

0.1953125*2*2*2*2*2*2*2*2*2*2*2*2*2*2

在这两种情况下,2*2*...的字符串是14的幂,其中python是2**14math.pow(2,14)

所以我们可以将它们重写为

3200 / (2**14)

[与3200 * 2**(-14)相同,因为负权力是正权力的倒数]和

0.1953125 * 2**14