2010-01-16 86 views
2

我正在評論一些JavaScript代碼,程序員在一些地方使用>>。我試圖搜索谷歌,但無法找到這個操作數/操作符。所以我就在這裏。下面的代碼示例:>>操作符/操作數/修飾符是做什麼的?

var triplet=(((binarray[i>>2]>>8*(i%4))&0xFF)<<16)|(((binarray[i+1>>2]>>8*((i+1)%4))&0xFF)<<8)|((binarray[i+2>>2]>>8*((i+2)%4))&0xFF); 

回答

2

>>是右移位運算符,<<是左移位運算符。他們對整數操作如下:

00001000b >> 1 = 00000100b 
00001000b << 1 = 00010000b 

換句話說:

num >> 1 = num/2 
num >> 2 = num/4 
. 
. 
. 
num >> n = num/2^n 

同樣:

num << 1 = num * 2 
num << 2 = num * 4 
. 
. 
. 
num << n = num * 2^n 
+1

要注意的重要一點是,''>>在'signed'使用類型將進行符號擴展,也就是說,它將使最左邊的位與先前的最左邊的位相同,因此符號得以保留。因此'(-1 >> 1)== -1'。對於無符號類型,最左邊的位在4字節的'int'平臺上設置爲0:((無符號)-1 >> 1)= 0x7fffffff'。 – 2010-01-16 12:45:16