概述
算数移位时应保持数的符号位不变,数值的大小则要发生变化。左移一位相当于该数乘以2,右移一位相当于该数除以2。
移位运算有算数移位、逻辑移位和循环移位一共3类,每种移位有左移和右移之分。
1. 算数移位
算数移位的对象是带符号数,在移位的过程中**必须保持操作数的符号不变**。左移一位时如果不产生溢出,则数值乘以2;右移一位时,
1.1 原码移位规则
不论正数还是负数,在左移或者右移时,符号位均不变,空出的位置一律以“0”补入。
负数的源码移位前后的 结果如下:
左移:移位前有
移位后有
右移:移位前有
移位后有
1.2 补码移位规则
(1)正数
符号位不变,不论左移或右移,空出的位置一律以“0”补入
(2)负数
左移:移位前有
移位后有
右移: 移位前有
移位后有
2. 逻辑移位
逻辑移位的对象是无符号数,因此移位时不需要考虑符号问题。
逻辑左移时,高位移丢,低位填“0”;逻辑右移时,低位移丢,高位填“0”
3. 循环移位
循环移位按是否与进位位一起移位又可分为两种:不带进位位的小循环、带进位位的大循环
最后
以上就是背后洋葱为你收集整理的带符号数的移位操作的全部内容,希望文章能够帮你解决带符号数的移位操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复