我正在通過一些關於Stack的素數的代碼,並發現這一點。我是什麼意思?
我試圖與此實驗的某個時候並推斷此:
var i = 5;
var j = 0;
如果我寫 J = < < 1,它是所有受讓人(I * 2),即 - 10在這種情況下,以j
如果我寫 j = i < < 2,(i * 2)* 2即 - 10 * 2 .....等等。
現在我懷疑這個操作員究竟做了些什麼?
我試着用谷歌搜索這個,但沒有找到任何直接的解決方案。
我正在通過一些關於Stack的素數的代碼,並發現這一點。我是什麼意思?
我試圖與此實驗的某個時候並推斷此:
var i = 5;
var j = 0;
如果我寫 J = < < 1,它是所有受讓人(I * 2),即 - 10在這種情況下,以j
如果我寫 j = i < < 2,(i * 2)* 2即 - 10 * 2 .....等等。
現在我懷疑這個操作員究竟做了些什麼?
我試着用谷歌搜索這個,但沒有找到任何直接的解決方案。
這些是在Javascript中的Bitwise Operators。
按位運算符將它們的操作數視爲32位(零和1)序列,而不是十進制,十六進制或八進制數。例如,十進制數字9具有1001的二進制表示。按位運算符對這些二進制表示執行操作,但它們返回標準的JavaScript數值。
向左移位運算符:
一個< < B:檔一個在二進制表示B(< 32)位的左側,從右側的零移位。
我想補充,他們在PHP中做同樣的事情。 –
另外值得注意的是左操作數轉換爲int32,右操作數在執行操作前轉換爲uint32,依[spec](http://es5.github.io/#x11.7.1) 。 –
<<
是左移運算符。每個位都會按照指定的次數向左移動。例如:n<<2
將按位移n
2次,向右側添加零。
n=4 // 0000 0000 0000 0100
n<<2 //<= 0000 0000 0001 0000 - Value is 16
The <<
operator[ES5 spec]是左移位運算符。它將左邊的數字和右邊的數字相同的位置移位。例如,i << 2
會將i
的數字移到左邊的2個位置。
var i = 5; // i: 0000 0000 0000 0101
i = i << 2; // i: 0000 0000 0001 0100
@SubirKumarSao - Java和JavaScript不是一回事(就像Car和Carpet不是一回事)。 – Quentin
請在擊中stackoverflow之前做你的研究(谷歌)。 –
@Quentin:就這個運營商而言,它們是完全一樣的東西。 –