2011-07-04 21 views
5

कुछ समय पहले मैंने बिट ऑपरेटरों का उपयोग करके मॉड्यूलो ऑपरेशन करने के लिए कहीं एक चाल देखी है। लेकिन अब मैं किसी भी तरह से उचित संचालन नहीं कर सकता। कोई भी जानता है कि यह कैसे करें? मुझे जो याद है वह% का उपयोग करने से तेज़ था।मॉड्यूलो ऑपरेशन करने के अन्य तरीके

+0

http://en.wikipedia.org/wiki/Modulo_operation#pformance_issues - 2 –

+0

की शक्तियों के लिए अच्छा सवाल, मैंने यहां जांच की: http://jsperf.com/js-modulo और उत्तर नीचे अच्छे लगते हैं! – TTT

उत्तर

8

"चाल" बाइनरी AND है 1. साथ एक मूल्य के किसी भी विषम संख्या पहली बिट करने के लिए 1.

तो

var foo = 7; 

if(foo & 1) { // true 
} 

सेट एक बिटवाइज़ का उपयोग होना आवश्यक है और में एक बेहतर प्रदर्शन किया है लगभग सभी प्लेटफार्म/ब्राउज़र।

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

आप (2^कश्मीर) -1 के साथ अपने मूल्य Anding द्वारा 2^कश्मीर (2 के एक शक्ति) के सापेक्ष कर सकते हैं।

+1

+1 लेकिन केवल सकारात्मक संख्या के लिए –

संबंधित मुद्दे