移位运算符---左移运算、右移运算、无符号右移

移位运算:在数的二进制形式的基础行进行位移

<<左移运算
>>有符号右移
<<<无符号右移

目录

1,左移运算

2、有符号右移(>>)

3、无符号右移(会改变正负号)

**此篇为个人理解,只用于个人学习,有错误的地方还请见谅**


1,左移运算

例:

26<<1(26的二进制向左移动1位)

        26的二进制为:00011010

        移动之后:        00110100

        运算后(转成十进制):52

        26 <<1 = 52

        总结:m << n = m *2^{n}

-26<<1(负数是以补码的形式存储)

        -26的原码:10011010

        所以-26的反码为:11100101

        所以-26的补码为:11100110

        移动之后:11001100

        转换成反码:11001011

        转成成原码为:10110100

        运算后:-52

满足:m << n = m *2^{n}

2、有符号右移(>>)

        正数右移:左侧补0

        26 >>1

        26的二进制为:00011010

        移动之后:        00001101

        运算后(转成十进制):13

        13 <<1 

        13的二进制为:00001101

        移动之后:00000110

        运算后:6

总结:m << n = m /2^{n} 

        负数右移:左侧补1

注意:遇到有小数的时候,采取向下取整的方法(6.5取6,-6.5取-7)

3、无符号右移(会改变正负号)

正数、负数左侧都补0

前面左移动和有符号运算不会考虑到决定正负的一位,所以直接来算-26的无符号右移,计算机默认是32位运算,这里-26的原码10011010,符号位会影响结果故:

-26的原码可写成:00000000 00000000 00000000 10011010

反码为:11111111 11111111 11111111 11100101

补码为:11111111 11111111 11111111 11100110

右移动后:01111111 11111111 11111111 11110011

转为原码:10000000 00000000 00000000 00001101

-26 >>> 1= 2147483635

**此篇为个人理解,只用于个人学习,有错误的地方还请见谅**

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想赢一次

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值