打印
[其他]

移位运算为什么比乘法除法快

[复制链接]
842|49
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bartonalfred|  楼主 | 2024-10-31 21:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
从效率上看,使用移位指令有更高的效率,因为移位指令占2个机器周期,而乘除法指令占4个机器周期。从硬件上看,移位对硬件更容易实现,所以会用移位,移一位就乘2,这种乘法当然考虑移位了。

使用特权

评论回复
沙发
suncat0504| | 2024-11-7 18:10 | 只看该作者
一个是指令周期,从基础上说,另一个是参与计算的寄存器少,单纯地移位。

使用特权

评论回复
板凳
minzisc| | 2024-11-7 22:32 | 只看该作者
移位操作可以在处理器硬件层面直接完成,而不需要调用额外的子程序或进行复杂的算术运算。

使用特权

评论回复
地板
beacherblack| | 2024-11-8 09:19 | 只看该作者
硬件级别的支持大大减少了移位操作的执行时间。

使用特权

评论回复
5
sesefadou| | 2024-11-8 11:03 | 只看该作者
现代编译器通常会对移位操作进行优化,以进一步提高其执行效率

使用特权

评论回复
6
olivem55arlowe| | 2024-11-8 13:42 | 只看该作者
乘法和除法指令通常需要更多的指令周期,因为它们涉及更复杂的计算过程。

使用特权

评论回复
7
mmbs| | 2024-11-8 15:47 | 只看该作者
乘法和除法的结果依赖于输入数据的具体值,这可能导致不同的计算路径和不同的执行时间。

使用特权

评论回复
8
sanfuzi| | 2024-11-8 17:28 | 只看该作者
乘法和除法需要使用专门的乘法器和除法器,这些单元的实现相对复杂,执行速度较慢。

使用特权

评论回复
9
caigang13| | 2024-11-8 19:07 | 只看该作者
移位相当于二进制处理

使用特权

评论回复
10
jimmhu| | 2024-11-8 20:13 | 只看该作者
移位运算是通过对二进制数进行左移或右移操作来实现的,这在硬件上非常简单。

使用特权

评论回复
11
ulystronglll| | 2024-11-8 20:37 | 只看该作者
由于移位运算的简单性,它们通常只需要一个或很少的几个指令周期来完成。

使用特权

评论回复
12
minzisc| | 2024-11-8 21:01 | 只看该作者
编译器可以很容易地识别和优化移位运算,因为它们的模式非常简单和明确。

使用特权

评论回复
13
beacherblack| | 2024-11-8 21:22 | 只看该作者
移位运算是基于二进制位的操作,本质上是将二进制数向左或向右移动指定的位数。对于乘以2的幂次(左移)或除以2的幂次(右移),移位运算可以直接通过硬件实现,不需要复杂的计算。

使用特权

评论回复
14
wangdezhi| | 2024-11-8 22:08 | 只看该作者
除法操作更为复杂,通常涉及减法、移位和试错操作。例如,计算a / b可能需要多次减法和移位操作来完成。

使用特权

评论回复
15
biechedan| | 2024-11-8 22:18 | 只看该作者
位指令通常占用较少的机器周期。              

使用特权

评论回复
16
kkzz| | 2024-11-8 22:40 | 只看该作者
移位运算之所以在某些情况下比乘法除法快,主要是由于硬件支持、简化运算

使用特权

评论回复
17
mmbs| | 2024-11-9 07:51 | 只看该作者
在进行乘法或除法运算时,特别是当操作数较大时,可能会遇到溢出的问题。而移位操作只是将二进制位序列进行移动,不会改变位的大小,因此不会引起溢出。这种特性在某些需要避免溢出的应用场景中非常有用。

使用特权

评论回复
18
claretttt| | 2024-11-9 10:41 | 只看该作者
移位运算的结果只依赖于输入数据的位模式,而不依赖于数据的具体值。

使用特权

评论回复
19
phoenixwhite| | 2024-11-9 12:47 | 只看该作者
移位指令可能只需要2个机器周期,而乘法和除法指令可能需要4个或更多机器周期。

使用特权

评论回复
20
bartonalfred|  楼主 | 2024-11-9 14:47 | 只看该作者
乘法和除法需要更多的逻辑电路和计算步骤来处理进位和借位等问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

1288

帖子

1

粉丝