[其他] 移位运算为什么比乘法除法快

[复制链接]
 楼主| 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 | 显示全部楼层
硬件级别的支持大大减少了移位操作的执行时间。
sesefadou 发表于 2024-11-8 11:03 | 显示全部楼层
现代编译器通常会对移位操作进行优化,以进一步提高其执行效率
olivem55arlowe 发表于 2024-11-8 13:42 | 显示全部楼层
乘法和除法指令通常需要更多的指令周期,因为它们涉及更复杂的计算过程。
mmbs 发表于 2024-11-8 15:47 | 显示全部楼层
乘法和除法的结果依赖于输入数据的具体值,这可能导致不同的计算路径和不同的执行时间。
sanfuzi 发表于 2024-11-8 17:28 | 显示全部楼层
乘法和除法需要使用专门的乘法器和除法器,这些单元的实现相对复杂,执行速度较慢。
caigang13 发表于 2024-11-8 19:07 来自手机 | 显示全部楼层
移位相当于二进制处理
jimmhu 发表于 2024-11-8 20:13 | 显示全部楼层
移位运算是通过对二进制数进行左移或右移操作来实现的,这在硬件上非常简单。
ulystronglll 发表于 2024-11-8 20:37 | 显示全部楼层
由于移位运算的简单性,它们通常只需要一个或很少的几个指令周期来完成。
minzisc 发表于 2024-11-8 21:01 | 显示全部楼层
编译器可以很容易地识别和优化移位运算,因为它们的模式非常简单和明确。
beacherblack 发表于 2024-11-8 21:22 | 显示全部楼层
移位运算是基于二进制位的操作,本质上是将二进制数向左或向右移动指定的位数。对于乘以2的幂次(左移)或除以2的幂次(右移),移位运算可以直接通过硬件实现,不需要复杂的计算。
wangdezhi 发表于 2024-11-8 22:08 | 显示全部楼层
除法操作更为复杂,通常涉及减法、移位和试错操作。例如,计算a / b可能需要多次减法和移位操作来完成。
biechedan 发表于 2024-11-8 22:18 | 显示全部楼层
位指令通常占用较少的机器周期。              
kkzz 发表于 2024-11-8 22:40 | 显示全部楼层
移位运算之所以在某些情况下比乘法除法快,主要是由于硬件支持、简化运算
mmbs 发表于 2024-11-9 07:51 | 显示全部楼层
在进行乘法或除法运算时,特别是当操作数较大时,可能会遇到溢出的问题。而移位操作只是将二进制位序列进行移动,不会改变位的大小,因此不会引起溢出。这种特性在某些需要避免溢出的应用场景中非常有用。
claretttt 发表于 2024-11-9 10:41 | 显示全部楼层
移位运算的结果只依赖于输入数据的位模式,而不依赖于数据的具体值。
phoenixwhite 发表于 2024-11-9 12:47 | 显示全部楼层
移位指令可能只需要2个机器周期,而乘法和除法指令可能需要4个或更多机器周期。
 楼主| bartonalfred 发表于 2024-11-9 14:47 | 显示全部楼层
乘法和除法需要更多的逻辑电路和计算步骤来处理进位和借位等问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

1564

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部