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

📁 36365快速检测中心 📅 2025-07-12 14:57:11 👤 admin 👁️ 3077 ❤️ 946
移位运算为什么比乘法除法快

[其他]

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

[复制链接]

4617|51

手机看帖扫描二维码随时随地手机跟帖

bartonalfred

当前在线

关注TA

发消息

35

主题1524

帖子4557

积分

中级工程师

中级工程师, 积分 4557, 距离下一级还需 443 积分

中级工程师, 积分 4557, 距离下一级还需 443 积分

积分4557

在线时间350 小时

精华0

注册时间2020-3-6

最后登录2025-7-12

打赏0.00受赏20.00

电梯直达

楼主

bartonalfred|

楼主

|

2024-10-31 21:00

|

只看该作者

|倒序浏览

|阅读模式

位运算, 移位, 指令, 硬件

从效率上看,使用移位指令有更高的效率,因为移位指令占2个机器周期,而乘除法指令占4个机器周期。从硬件上看,移位对硬件更容易实现,所以会用移位,移一位就乘2,这种乘法当然考虑移位了。

使用特权

评论回复

赏

标题置顶

标题高亮

点赞共0人点赞

suncat0504

当前离线

关注TA

发消息

158

主题4510

帖子1万

积分

资深工程师

资深工程师, 积分 13605, 距离下一级还需 6395 积分

资深工程师, 积分 13605, 距离下一级还需 6395 积分

积分13605

在线时间1503 小时

精华4

注册时间2018-6-18

最后登录2025-7-12

打赏0.00受赏1656.00

沙发

suncat0504|

|

2024-11-7 18:10

|

只看该作者

一个是指令周期,从基础上说,另一个是参与计算的寄存器少,单纯地移位。

使用特权

评论回复

赏

点赞共0人点赞

minzisc

当前在线

关注TA

发消息

65

主题5632

帖子1万

积分

资深工程师

资深工程师, 积分 16959, 距离下一级还需 3041 积分

资深工程师, 积分 16959, 距离下一级还需 3041 积分

积分16959

在线时间633 小时

精华0

注册时间2015-4-5

最后登录2025-7-12

打赏0.00受赏52.00

板凳

minzisc|

|

2024-11-7 22:32

|

只看该作者

移位操作可以在处理器硬件层面直接完成,而不需要调用额外的子程序或进行复杂的算术运算。

使用特权

评论回复

赏

点赞共0人点赞

beacherblack

当前在线

关注TA

发消息

16

主题1468

帖子4377

积分

中级工程师

中级工程师, 积分 4377, 距离下一级还需 623 积分

中级工程师, 积分 4377, 距离下一级还需 623 积分

积分4377

在线时间341 小时

精华0

注册时间2020-3-6

最后登录2025-7-12

打赏0.00受赏5.00

地板

beacherblack|

|

2024-11-8 09:19

|

只看该作者

硬件级别的支持大大减少了移位操作的执行时间。

使用特权

评论回复

赏

点赞共0人点赞

sesefadou

当前在线

关注TA

发消息

25

主题1796

帖子5379

积分

高级工程师

高级工程师, 积分 5379, 距离下一级还需 2621 积分

高级工程师, 积分 5379, 距离下一级还需 2621 积分

积分5379

在线时间412 小时

精华0

注册时间2020-3-5

最后登录2025-7-12

5楼

sesefadou|

|

2024-11-8 11:03

|

只看该作者

现代编译器通常会对移位操作进行优化,以进一步提高其执行效率

使用特权

评论回复

赏

点赞共0人点赞

olivem55arlowe

当前在线

关注TA

发消息

16

主题1503

帖子4398

积分

中级工程师

中级工程师, 积分 4398, 距离下一级还需 602 积分

中级工程师, 积分 4398, 距离下一级还需 602 积分

积分4398

在线时间334 小时

精华0

注册时间2020-3-6

最后登录2025-7-12

打赏0.00受赏10.00

6楼

olivem55arlowe|

|

2024-11-8 13:42

|

只看该作者

乘法和除法指令通常需要更多的指令周期,因为它们涉及更复杂的计算过程。

使用特权

评论回复

赏

点赞共0人点赞

mmbs

当前在线

关注TA

发消息

197

主题6838

帖子2万

积分

技术总监

技术总监, 积分 20520, 距离下一级还需 29480 积分

技术总监, 积分 20520, 距离下一级还需 29480 积分

积分20520

在线时间667 小时

精华0

注册时间2013-3-30

最后登录2025-7-12

打赏0.00受赏53.00

7楼

mmbs|

|

2024-11-8 15:47

|

只看该作者

乘法和除法的结果依赖于输入数据的具体值,这可能导致不同的计算路径和不同的执行时间。

使用特权

评论回复

赏

点赞共0人点赞

sanfuzi

当前在线

关注TA

发消息

34

主题3304

帖子9907

积分

技术达人

技术达人, 积分 9907, 距离下一级还需 93 积分

技术达人, 积分 9907, 距离下一级还需 93 积分

积分9907

在线时间477 小时

精华0

注册时间2015-9-20

最后登录2025-7-12

打赏0.00受赏63.00

8楼

sanfuzi|

|

2024-11-8 17:28

|

只看该作者

乘法和除法需要使用专门的乘法器和除法器,这些单元的实现相对复杂,执行速度较慢。

使用特权

评论回复

赏

点赞共0人点赞

caigang13

当前离线

关注TA

发消息

5

主题3595

帖子1万

积分

资深工程师

资深工程师, 积分 10683, 距离下一级还需 9317 积分

资深工程师, 积分 10683, 距离下一级还需 9317 积分

积分10683

在线时间122 小时

精华0

注册时间2020-8-26

最后登录2025-6-3

打赏0.00受赏25.00

9楼

caigang13|

|

2024-11-8 19:07

|

只看该作者

移位相当于二进制处理

使用特权

评论回复

赏

点赞共0人点赞

jimmhu

当前在线

关注TA

发消息

20

主题3746

帖子1万

积分

资深工程师

资深工程师, 积分 11175, 距离下一级还需 8825 积分

资深工程师, 积分 11175, 距离下一级还需 8825 积分

积分11175

在线时间475 小时

精华0

注册时间2015-4-5

最后登录2025-7-12

打赏0.00受赏29.00

10楼

jimmhu|

|

2024-11-8 20:13

|

只看该作者

移位运算是通过对二进制数进行左移或右移操作来实现的,这在硬件上非常简单。

使用特权

评论回复

赏

点赞共0人点赞

ulystronglll

当前在线

关注TA

发消息

17

主题1404

帖子4179

积分

中级工程师

中级工程师, 积分 4179, 距离下一级还需 821 积分

中级工程师, 积分 4179, 距离下一级还需 821 积分

积分4179

在线时间317 小时

精华0

注册时间2020-3-6

最后登录2025-7-12

打赏0.00受赏15.00

11楼

ulystronglll|

|

2024-11-8 20:37

|

只看该作者

由于移位运算的简单性,它们通常只需要一个或很少的几个指令周期来完成。

使用特权

评论回复

赏

点赞共0人点赞

minzisc

当前在线

关注TA

发消息

65

主题5632

帖子1万

积分

资深工程师

资深工程师, 积分 16959, 距离下一级还需 3041 积分

资深工程师, 积分 16959, 距离下一级还需 3041 积分

积分16959

在线时间633 小时

精华0

注册时间2015-4-5

最后登录2025-7-12

打赏0.00受赏52.00

12楼

minzisc|

|

2024-11-8 21:01

|

只看该作者

编译器可以很容易地识别和优化移位运算,因为它们的模式非常简单和明确。

使用特权

评论回复

赏

点赞共0人点赞

beacherblack

当前在线

关注TA

发消息

16

主题1468

帖子4377

积分

中级工程师

中级工程师, 积分 4377, 距离下一级还需 623 积分

中级工程师, 积分 4377, 距离下一级还需 623 积分

积分4377

在线时间341 小时

精华0

注册时间2020-3-6

最后登录2025-7-12

打赏0.00受赏5.00

13楼

beacherblack|

|

2024-11-8 21:22

|

只看该作者

移位运算是基于二进制位的操作,本质上是将二进制数向左或向右移动指定的位数。对于乘以2的幂次(左移)或除以2的幂次(右移),移位运算可以直接通过硬件实现,不需要复杂的计算。

使用特权

评论回复

赏

点赞共0人点赞

wangdezhi

当前在线

关注TA

发消息

204

主题7494

帖子2万

积分

技术总监

技术总监, 积分 22399, 距离下一级还需 27601 积分

技术总监, 积分 22399, 距离下一级还需 27601 积分

积分22399

在线时间600 小时

精华0

注册时间2013-5-27

最后登录2025-7-12

打赏0.00受赏24.00

14楼

wangdezhi|

|

2024-11-8 22:08

|

只看该作者

除法操作更为复杂,通常涉及减法、移位和试错操作。例如,计算a / b可能需要多次减法和移位操作来完成。

使用特权

评论回复

赏

点赞共0人点赞

biechedan

当前在线

关注TA

发消息

294

主题8154

帖子2万

积分

技术总监

技术总监, 积分 24509, 距离下一级还需 25491 积分

技术总监, 积分 24509, 距离下一级还需 25491 积分

积分24509

在线时间654 小时

精华0

注册时间2013-1-24

最后登录2025-7-12

打赏0.00受赏18.00

15楼

biechedan|

|

2024-11-8 22:18

|

只看该作者

位指令通常占用较少的机器周期。

使用特权

评论回复

赏

点赞共0人点赞

kkzz

当前离线

关注TA

发消息

332

主题1万

帖子3万

积分

技术总监

技术总监, 积分 33794, 距离下一级还需 16206 积分

技术总监, 积分 33794, 距离下一级还需 16206 积分

积分33794

在线时间875 小时

精华0

注册时间2012-8-17

最后登录2025-7-12

打赏0.00受赏27.00

16楼

kkzz|

|

2024-11-8 22:40

|

只看该作者

移位运算之所以在某些情况下比乘法除法快,主要是由于硬件支持、简化运算

使用特权

评论回复

赏

点赞共0人点赞

mmbs

当前在线

关注TA

发消息

197

主题6838

帖子2万

积分

技术总监

技术总监, 积分 20520, 距离下一级还需 29480 积分

技术总监, 积分 20520, 距离下一级还需 29480 积分

积分20520

在线时间667 小时

精华0

注册时间2013-3-30

最后登录2025-7-12

打赏0.00受赏53.00

17楼

mmbs|

|

2024-11-9 07:51

|

只看该作者

在进行乘法或除法运算时,特别是当操作数较大时,可能会遇到溢出的问题。而移位操作只是将二进制位序列进行移动,不会改变位的大小,因此不会引起溢出。这种特性在某些需要避免溢出的应用场景中非常有用。

使用特权

评论回复

赏

点赞共0人点赞

claretttt

当前在线

关注TA

发消息

69

主题1608

帖子4824

积分

中级工程师

中级工程师, 积分 4824, 距离下一级还需 176 积分

中级工程师, 积分 4824, 距离下一级还需 176 积分

积分4824

在线时间368 小时

精华0

注册时间2020-3-6

最后登录2025-7-12

打赏0.00受赏10.00

18楼

claretttt|

|

2024-11-9 10:41

|

只看该作者

移位运算的结果只依赖于输入数据的位模式,而不依赖于数据的具体值。

使用特权

评论回复

赏

点赞共0人点赞

phoenixwhite

当前在线

关注TA

发消息

12

主题1326

帖子3972

积分

中级工程师

中级工程师, 积分 3972, 距离下一级还需 1028 积分

中级工程师, 积分 3972, 距离下一级还需 1028 积分

积分3972

在线时间307 小时

精华0

注册时间2020-3-6

最后登录2025-7-12

打赏0.00受赏15.00

19楼

phoenixwhite|

|

2024-11-9 12:47

|

只看该作者

移位指令可能只需要2个机器周期,而乘法和除法指令可能需要4个或更多机器周期。

使用特权

评论回复

赏

点赞共0人点赞

bartonalfred

当前在线

关注TA

发消息

35

主题1524

帖子4557

积分

中级工程师

中级工程师, 积分 4557, 距离下一级还需 443 积分

中级工程师, 积分 4557, 距离下一级还需 443 积分

积分4557

在线时间350 小时

精华0

注册时间2020-3-6

最后登录2025-7-12

打赏0.00受赏20.00

20楼

bartonalfred|

楼主

|

2024-11-9 14:47

|

只看该作者

乘法和除法需要更多的逻辑电路和计算步骤来处理进位和借位等问题。

使用特权

评论回复

赏

点赞共0人点赞

相关推荐