2011-07-04 13 views
5

Jakiś czas temu widziałem gdzieś sztuczkę do wykonywania operacji modulo za pomocą operatorów bitowych. Ale teraz nie mogę w żaden sposób wykonać właściwej operacji. Ktoś wie, jak to zrobić? Z tego co pamiętam było szybsze niż użycie%.Inne sposoby wykonywania operacji modulo

+0

http://pl.wikipedia.org/wiki/Modulo_operation#Performance_issues - dla uprawnień 2. –

+0

Ładne pytanie, sprawdziłem tutaj: http://jsperf.com/js-modulo i odpowiedzi w dół wydają się dobre! – TTT

Odpowiedz

8

„trick” ma wartość binarną AND z 1. Każda liczba nieparzysta musi mieć pierwszy bit ustawiony na 1.

So

var foo = 7; 

if(foo & 1) { // true 
} 

Korzystanie bitowego i ma lepszą wydajność w prawie wszystkie platformy/przeglądarki.

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

Można zrobić modulo 2^k (o mocy 2) poprzez logiczne jakiegokolwiek swoją wartość z (2^k) -1.

+1

+1, ale tylko dla liczb pozytywnych –

Powiązane problemy