我是靠谱客的博主 背后洋葱,最近开发中收集的这篇文章主要介绍带符号数的移位操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

算数移位时应保持数的符号位不变,数值的大小则要发生变化。左移一位相当于该数乘以2,右移一位相当于该数除以2。

移位运算有算数移位、逻辑移位和循环移位一共3类,每种移位有左移和右移之分。

 

1. 算数移位

算数移位的对象是带符号数,在移位的过程中**必须保持操作数的符号不变**。左移一位时如果不产生溢出,则数值乘以2;右移一位时,

1.1 原码移位规则

不论正数还是负数,在左移或者右移时,符号位均不变,空出的位置一律以“0”补入。

负数的源码移位前后的 结果如下:

左移:移位前有   

           移位后有              

右移:移位前有   

           移位后有   

1.2 补码移位规则

(1)正数

符号位不变,不论左移或右移,空出的位置一律以“0”补入

(2)负数

 左移:移位前有   

            移位后有              

右移: 移位前有   

            移位后有   

2. 逻辑移位

逻辑移位的对象是无符号数,因此移位时不需要考虑符号问题。

逻辑左移时,高位移丢,低位填“0”;逻辑右移时,低位移丢,高位填“0”

3. 循环移位

循环移位按是否与进位位一起移位又可分为两种:不带进位位的小循环、带进位位的大循环

最后

以上就是背后洋葱为你收集整理的带符号数的移位操作的全部内容,希望文章能够帮你解决带符号数的移位操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部