2013-05-07 64 views
0

我最近一直在閱讀這本書,「Supercharged Javascript圖形」,它只是很棒。它有一些非常有趣的概念和使用html5 canvas元素和其他圖形的例子。它也使用jQuery庫,並教導如何創建自己的插件。在他的大多數例子中,他使用bitwise operators,我無法理解它們。他確實解釋了他們的使用,但並不完全。在他的例子最常用的是:
Javascript按位向普通運算符

 x >> 0 
     x << y 
     x >>> 0 
     x & y 
     x | y 
     x^y 

我有一些無法理解其用途和他們的利益,所以我只是想知道什麼是他們相當於使用普通運營商。我怎樣才能用x%y或類似的東西替代x >> y

+0

他們解釋他們做了什麼,但唯一明確的例子是x >> y。他們也沒有詳細介紹性能和他們的優勢 – lomas09 2013-05-07 16:46:18

+0

該鏈接應該被要求閱讀,但不直接適用於JavaScript,所以沒有在我眼中的重複。 – 2013-05-07 21:36:23

回答

2

下面是對每個解釋。在所有情況下,如有必要,運算符將它們的參數轉換爲整數值。結果總是一個整數值(如果任一參數不能轉換爲整數值,則爲NaN)。

x >> 0 

此移位0位到右側,左側與符號位填充英寸這是用來截取x爲一個整數的技巧。 (這是相同的Math.floor(x)如果x不爲負,並且相同Math.ceil(x)如果x不爲正。)

x << y 

此轉移y位到左側,與零權填充。相當於乘以2 y。當y < 0:它使用y的二進制補碼錶示的最低五位作爲正移位值時,它的行爲有些出乎意料。

x >>> 0 

這通過任何轉移x在所有,但是將x爲無符號整數值的結果。 (例如,(-1) >>> 0是4294967295 = 2 -1)

x & y 

此所採用的值的逐位AND在xy。當且僅當xy的對應位都是1時,結果的每個位都是1。

x | y 

這需要逐位在xy值的OR。當且僅當xy的一個或兩個對應位爲1時,結果的每個位都是1。

x^y 

此所採用的值的在xy的XOR。當且僅當xy的相應位不同時,結果的每一位都是1。

+0

如果x被移到另一個值而不是0,該怎麼辦?那就是'x >> y' – lomas09 2013-05-07 16:55:37

+0

@ lomas09 - 與2^y的整數除法相同。與<< <<一樣,在移位中只使用'y'的最低五位。 – 2013-05-07 16:58:50

+0

你讓我的一天變得更輕鬆。謝謝,我真的很感激 – lomas09 2013-05-07 17:01:05