[其他]
移位运算为什么比乘法除法快
[复制链接]
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人点赞