Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 计算机的计算速度比x/2快0.5*x吗?_Math - Fatal编程技术网

Math 计算机的计算速度比x/2快0.5*x吗?

Math 计算机的计算速度比x/2快0.5*x吗?,math,Math,可能重复: 我听说计算机做这个操作。比x/2快5*x。这是真的吗?你能告诉我这是怎么回事吗?一般说来这不是真的。它将取决于微处理器的指令集。有时没有本机“/”操作,因此编译器将使用两个时钟:一个用于获取.5,一个用于乘法,而它的表亲.5*x将只使用一个 但是有“/”没有限制,可能有一个微处理器有一个本机的“/”,所以这取决于它。简短的回答:是的,乘法通常更快 在特定情况下,它可能取决于许多因素,例如平台、语言、编译器、硬件、查找表的存在与否等。对于整数除以2的幂,位移动有时会稍微快一点。但编译

可能重复:


我听说计算机做这个操作。比x/2快5*x。这是真的吗?你能告诉我这是怎么回事吗?

一般说来这不是真的。它将取决于微处理器的指令集。有时没有本机“/”操作,因此编译器将使用两个时钟:一个用于获取.5,一个用于乘法,而它的表亲.5*x将只使用一个


但是有“/”没有限制,可能有一个微处理器有一个本机的“/”,所以这取决于它。

简短的回答:是的,乘法通常更快

在特定情况下,它可能取决于许多因素,例如平台、语言、编译器、硬件、查找表的存在与否等。对于整数除以2的幂,位移动有时会稍微快一点。但编译器通常可以优化这些情况

wim@wim-acer:~/Desktop$ python -mtimeit '0.5*1234567890.'
100000000 loops, best of 3: 0.0168 usec per loop
wim@wim-acer:~/Desktop$ python -mtimeit '1234567890./2.'
10000000 loops, best of 3: 0.043 usec per loop
wim@wim-acer:~/Desktop$ python -mtimeit '1234567890 >> 1'
100000000 loops, best of 3: 0.0168 usec per loop

<> >在编写C++代码时,当我必须从循环内按常数<代码> k < /代码>进行划分时,我经常能够通过在循环中定义<代码>双Ki=1 //k < /代码>,并使用循环中的<代码> Ki <代码>乘法来压缩性能关键代码中的一些增益。p> 如果
x
是一个浮点数,那么位移位不会有什么大作用。即使处理器上有一个本机“/”,它仍然会很慢。是的,你是对的。将会发生的事情是,它将在更长的时间内被处理。我也听说过,我知道这与硬件处理数据的方式有关,但我对它的了解还不够,无法给出合理的解释。然而,这一页似乎有一些对你有用的好答案。不知道是否有编译器/平台可以做到这一点,但将浮点/双精度除以/乘以
2
只意味着从指数中减去/添加
1
。没有想过角落的情况是否复杂。作为提示,考虑乘法的手动过程与手动除法过程。一个由一系列直接计算组成,而另一个涉及一系列计算和决策过程。