移位操作符的介绍与基本使用

移位操作符是一种双目操作符,移动的是储存在内存中的二进制数。左位移操作符<< 与右位移>> 的移动规则并不相同。

写法

左移操作符左边是我们想要移动的变量,右边是想要移动的位数
如,将变量a向左移动1位可以写做:a << 1。

另外在写变量移动的位数时,不可以移动负位数,移动负位数是标准无定义的!

1.左位移操作符

左位移操作符的移动规则为:“左边抛弃,右边补0”。

如:
在这里插入图片描述
方框中的内容是编译器所读取的内容,同样也是展现出来给程序员看的内容。将 a 整体向左移动一位后,左边的0就会超出方框范围被舍去,右边为了补齐32位数会添加一个0来使总数量保持不变。此时 a 的移动便完成了。

需要注意的是,虽然 b 等于 a 向左移1位的值,但位移操作符并没有改变变量 a 的值。

还有一个巧点,那就是左移对变量其实还有乘2的效果,比如下图将 a 向左移动一位后 a 从10变成了20。在这里插入图片描述

2.右位移操作符

右位移操作符的移动规则并不相同,分为逻辑右移算数右移两种方法。这两种移动规则的选择由编译器决定,但大部分的编译器用的都是算数右移,比如VS等。

(1)逻辑右移

逻辑右移规则:

逻辑右移:“左边补零,右边丢弃”

逻辑右移和左位移操作符移动规则相似,只不过一个向右移、一个向左移。

在这里插入图片描述
而且逻辑右移也有着使变量数值大小除2的效果。

(2)算术右移

算术右移规则:

算数右移:“左边用该原值的符号补,右边丢弃”

算数位移左边用该原值的符号补的意思是:当二进制数右移时,方框中左边的位置就会被空出来,这是便用原数值中符号位的数补齐空缺位置
如:
在这里插入图片描述
-20的符号位是1,所以 a 右移后方框里空出来的两个位置补上两个1,最右边多出来的两个0舍去。

以上便是本文的全部内容,如有错误或改进之处也欢迎留言给作者,感谢观看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值