从0到1学会C中的左移和右移

从在代码里看见>> << 连这两个符号叫左移和右移都不知道是啥
到查了百度和问朋友终于是弄懂了它
接下来就和大家分享一下我的理解叭
首先举个小栗子

local a = 10 >> 2

这个就叫10右移2位得出a
我们把10称为左数,2称为右数(需要位移的数),中间的>>或<<称为右移或左移
如何来运算这个a = 10 >> 2呢

第一步:

把左数转为二进制
10转二进制然后将余数从下到上写,就是1010,这就是10的二进制

第二步:

把10得二进制1010右移两位
在这里插入图片描述
把1010右移两位就是字面意思,最后那两位右移出去了就不要它了,然后左边补0!!(0也相当于没有哈哈哈)

第三步:

把0010二进制十进制,也就是2
所以!! 10得右移两位结果是2,也就是 a = 2

那么左移呢?

local a = 10 << 2
第一步:

同样把左数转换成二进制,10得二进制是1010

第二步:

在这里插入图片描述
把1010左移两位还是字面意思,左移多少位就给它加几位0

第三步:

现在我们得到的二进制是101000
然后把101000二进制十进制,也就是2
所以!! 10得右移两位结果是2,也就是 a = 40

然后大家就会不可避免的遇到了负数
然后就会不可避免的遇到了负数十进制转二进制

负数十进制转二进制

第一步:

先把负数取绝对值(变正数)然后转二进制,这个大家都会了吧

第二步:

然后把取到的二进制转反码!!
例如二进制是101000的反码就是010111
但是由于他是负数,所以最高位,0001 0111的最左边这个0要变成1所以10 的二进制的反码是10010111

第三步:

补码!
就是给10010111加1,由于二进制里面只有0和1,所以加1的进位,变成10011000
在这里插入图片描述

C语言中的左移表示乘以2,右移表示除以2,这是由计算机工作原理导致的

最后教大家一个简单的方法
就是!
Windows自带的计算机!
居然还有程序员计算机!
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

管你看没看懂,我看得懂就完事了
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值