【逻辑位移和算数位移】

<< 运算符 && >> 运算符

正数位移

x>>n 中 x 为正数时,会将x的所有位右移x位,同时左边高位补0
在这里插入图片描述
显而易见,运算结束后,值为1 。
可知右移n位,结果就是 x / 2^n:7 / 2 ^2 = 1;

也同理x<<n 会将x的所有位左移x位,右边地位补0,
其运算结果为 x*(2^n)

负数位移

当负数在进行左移运算时,运算方式没有改变
左移几位,就乘上几个2

-2 << 2= -8

逻辑位移和算数位移

当x是有符号整型的负数时,位移运算的结果因编译器的差异会有所改变。
在所有编译器中,会执行逻辑位移算术位移

逻辑位移

逻辑位移不考虑符号位,包括所有符号位进行一起位移以0来填补空白

在这里插入图片描述
可知,负整数位移过程中:

符号位由1变为0,位移的结果为0或正整数
其结果只能通过 二进制 转十进制 进行运算 。

算术位移

算术位移保留最高位的符号位,并用位移前的符号位来填补空白

在这里插入图片描述

以图为例:

位移前后符号不变
位移后的绝对值值为原来的绝对值的 1/2^2=1/4

结语

当进行负数位移时,无论采用哪种位移方式都会降低程序的可移植性
所以我们要记住不要对负数进行位移

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值