计算倒数:n**(1)还是(1/n)?

2024-06-13 02:15:45 发布

您现在位置:Python中文网/ 问答频道 /正文

在随机.py的源代码中,有以下常量定义:

BPF = 53        # Number of bits in a float
RECIP_BPF = 2**-BPF

我不是主修数学的,但是用1代替BPF不是更易读吗?在

或者说,在编程中,乘法比除法更方便吗?在


别担心。在

为了澄清我的问题,我发现:

在许多机器上,特别是那些没有硬件支持除法的机器上,除法比乘法运算慢,因此这种方法可以产生相当大的加速效果。第一步相对较慢,但只需完成一次。”

http://en.wikipedia.org/wiki/Multiplicative_inverse


Tags: ofinpy机器number定义源代码编程
3条回答

RECIP_BPF,尽管它的名称是,但不是1/BPF。它是1/(2^BPF)。我不能代表所有人说话,但我发现读作2**-BPF比读1.0/2**BPF更容易。在

请注意,乘法和除法的速度与此无关;特别是,由于这些是常量,编译器或解释器只需要对它们求值一次(编译器甚至可以在编译时计算)。此外,由于这些都是2的精确幂,因此有一些直接的方法来产生结果,而不必进行乘法或除法,这是利用浮点使用二进制编码的事实。在

“2**-BPF”表示2提升到-BPF幂。在

可编辑性是主观的。也就是说,我个人觉得2**-BPF1.0/2**BPF(在2**BFP前后加上或不加括号)更容易阅读。在

至于性能差异,我怀疑它们是否相关,因为在导入模块时,表达式只计算一次。在

相关问题 更多 >