2015-09-07 78 views
3

(number & number)是什麼意思?我想讀用JavaScript編寫別人的代碼,並與數字和數字如何在if語句中工作?

if(misc & 0x800) {//...} //0x800 is 2048 when converted to decimal 

過來凡var misc = 16400; //or some other number which continuously changes

所以語句來像if(16400 & 2048)待辦事宜東西 當我console.log()編這兩個數字我得到了0

if語句在數字和數字的情況下如何工作?

+2

的[什麼是位運算符?(http://stackoverflow.com/questions/276706/what-are-bitwise-operators) – Abhitalks

回答

3

一個&手段,這是bitwise AND

的數字是

16400 (10) === 100000000010000 (2)

0x800 (16) === 100000000000 (2)

基於按位運算規則 其結果將是:

100000000010000 
    100000000000 
_______________ 
000000000000000 

這樣的操作oftenly用於位掩碼(wiki link

+0

但爲什麼要使用這些數字?它可以簡寫爲If 0 – developer

+2

不可以,因爲,例如,如果misc將是18448,則'18448&0x800'將是2048,因此它是trurhy。正如你所說'misc'不斷變化,所以你的if會依賴於'misc'值。 – Andrey

1

邏輯運算符and。它首先將數據轉換爲位和操作數。

ex。

2 & 3 
--> 010 & 011 
--> 010 
--> 2 
+0

如果可能重複console.log()011&010你會得到8.爲什麼這樣? – developer

+0

因爲011&010 - > 1001&1000 // 011作爲數字將被轉換爲1001二進制,並且010將被轉換爲1000二進制 - > 1000 //這是二進制表示 - > 8 //號碼錶示 – intekhab