2011-07-04 7 views
5

少し前に、ビット演算子を使用してモジュロ演算を実行するためのトリックを見たことがあります。しかし今、私は決して適切な操作を行うことができません。誰でもその方法を知っていますか?私が覚えていることから、%を使うよりも速かった。モジュロ演算を実行する他の方法

+0

http://en.wikipedia.org/wiki/Modulo_operation#Performance_issues - 2の威力のために。 –

+0

良い質問、私はここでチェックしました:http://jsperf.com/js-moduloと答えが良いようです! – TTT

答えて

8

「トリック」が1の値は、任意の奇数の最初のビットがビット単位を使用するので、1

var foo = 7; 

if(foo & 1) { // true 
} 

に設定されている必要がありますバイナリANDすることであり、優れたパフォーマンスのを持っていますほぼすべてのプラットフォーム/ブラウザ

for(var loop = 0; loop < 10; loop++) { 
    if(loop & 1) { 
     console.log('I am ', loop, ' and I am odd!'); 
    } 
} 
8

2^k(2の累乗)のモジュロは、(2^k)-1で値を論理積することでできます。

+1

+1が正数の場合のみ –

関連する問題