本文摘自http://blog.csdn.net/briblue/article/details/70296326
右移運算符(>>)
規(guī)則a >> b 將數(shù)值 a 的二進制數(shù)值從 0 位算起到第 b - 1 位陷寝,整體向右方向移動 b 位戳杀,符號位不變宁否,高位空出來的位補數(shù)值 0妒御。
5>>1 ===> 1000000000000101>>1 = 1000000000000010 = 2
7>>2 ===> 1000000000000111>>2 = 1000000000000001 = 1
9>>3 ===> 1000000000001001>>3 = 1000000000000001 = 1
11>>2 ===> 1000000000001011>>2 = 1000000000000010 = 2
大家發(fā)現(xiàn)什么規(guī)律沒有樟氢?a >> b = a / ( 2 ^ b ) ,所以 5 >> 1= 5 / 2 = 2,11 >> 2 = 11 / 4 = 2。
左移運算符(<<)
規(guī)則a << b 將數(shù)值 a 的二進制數(shù)值從 0 位算起到第 b - 1 位侠鳄,整體向左方向移動 b 位埠啃,符號位不變,低位空出來的位補數(shù)值 0伟恶。
5<<1 ===> 1000 0000 0000 0101<<1 = 1000000000001010 = 10
7<<2 ===> 1000 0000 0000 0111<<2 = 1000000000011100 = 28
9<<3 ===> 1000 0000 0000 1001<<3 = 1000000001001000 = 72
11<<2 ===> 1000 0000 0000 1011<<2 = 1000000000101100 = 44
很明顯就可以看出 a << b = a * (2 ^ b)
綜合上面兩個可以看到碴开,如果某個數(shù)值右移 n 位,就相當于拿這個數(shù)值去除以 2 的 n 次冪博秫。如果某個數(shù)值左移 n 位潦牛,就相當于這個數(shù)值乘以 2 ^ n。