从在代码里看见>> << 连这两个符号叫左移和右移都不知道是啥
到查了百度和问朋友终于是弄懂了它
接下来就和大家分享一下我的理解叭
首先举个小栗子
local a = 10 >> 2
这个就叫10右移2位得出a
我们把10称为左数,2称为右数(需要位移的数),中间的>>或<<称为右移或左移
如何来运算这个a = 10 >> 2呢
第一步:
把左数转为二进制
然后将余数从下到上写,就是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自带的计算机!
居然还有程序员计算机!
管你看没看懂,我看得懂就完事了