左移运算和右移运算
1) 左移运算(<<)
左移就是把所有位向左移动⼏位
如: 12 << 2 意思就是12向左移动两位
记住我12的⼆进制是: 0000 1100
通过这个图我们可以看出来,所有的位全都向左移动两位,然后把右边空的两个位⽤0补上,最左边多出的两个位去掉,最后得到的结果就是00110000 结果就是48
我们⽤同样的办法算 12<<3 结果是 96
8<<4 结果是 128
由此我们得出⼀个快速的算法 M << n 其实可以这么算 M << n = M * 2n
2) 右移运算符(>>)
这个跟左移运算⼤体是⼀样的
例: 12 >> 2
我们可以看出来右移和左移其实是⼀样的,但是还是有点不同的,不同点在于对于正数和负数补位的时候补的不⼀样,负数补1,正数补0
如我们再做⼀个 –8 的 -8>>2
这⾥总结⼀下,关于负数或者正数来说,移位的时候是⼀样的,但是在补位的时候,如果最⾼位是0就补0,如果最⾼位是1就补1
由此我们得出⼀个快速的算法 M >> n 其实可以这么算 M >> n = M / 2^n
发布评论