是不是无符号数的移位都是逻辑移位,有符号数的移位都是算术移位?

发布网友 发布时间:2022-04-25 14:30

我来回答

2个回答

热心网友 时间:2023-10-09 05:10

对于无符号类型的数据,所有移位操作都是逻辑移位;对于有符号类型的数据,依据编译器不同而选择到底采用逻辑移位还是算术移位。

无论是左移还是右移,空缺部分都是直接补0。移出的位数要么到了更高位,要么直接丢弃。取决于你的数据类型。

左移与逻辑移位完全相同,右移的时候左边的空缺位补0还是补1,根据符号位来,如果是正数,则补0,如果是负数,则补1。

只要移出的数据不被舍弃,无论是逻辑移位还是算术移位都类等于乘除法,这也正是为啥算术右移的时候补的数和符号位一致的原因。

扩展资料:

当乘数或除数是2n时,算术移位用来快速地完成对整数进行乘法或除法的运算。算数左移n位相当于乘上2n,执行方法是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补0。

逻辑左移n位的执行方法,是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补"0"。逻辑右移n位的执行方法是把原来数中的每一位都向右移动n个位置,右面移出的低位丢弃不要,左面高位空出的位置上全部补0。

参考资料:百度百科-算数左移位

热心网友 时间:2023-10-09 05:10

应该刚好相反,因为逻辑移位要存储移到那里做标记,而算术不需要做标记,移过后就行了。
所以跟你标题上说的是相反的。
感觉ok就给个好评采纳吧,尽快采纳可以帮我赚多50分哦,谢谢。。。。。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com