是不是无符号数的移位都是逻辑移位,有符号数的移位都是算术移位?
1个回答
2022-09-28 · 百度认证:北京惠企网络技术有限公司官方账号
关注
展开全部
对于无符号类型的数据,所有移位操作都是逻辑移位;对于有符号类型的数据,依据编译器不同而选择到底采用逻辑移位还是算术移位。
无论是左移还是右移,空缺部分都是直接补0。移出的位数要么到了更高位,要么直接丢弃。取决于你的数据类型。
左移与逻辑移位完全相同,右移的时候左边的空缺位补0还是补1,根据符号位来,如果是正数,则补0,如果是负数,则补1。
只要移出的数据不被舍弃,无论是逻辑移位还是算术移位都类等于乘除法,这也正是为啥算术右移的时候补的数和符号位一致的原因。
扩展资料:
当乘数或除数是2n时,算术移位用来快速地完成对整数进行乘法或除法的运算。算数左移n位相当于乘上2n,执行方法是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补0。
逻辑左移n位的执行方法,是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补"0"。逻辑右移n位的执行方法是把原来数中的每一位都向右移动n个位置,右面移出的低位丢弃不要,左面高位空出的位置上全部补0。
参考资料:百度百科-算数左移位
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询