खोज…


बिटवाइज़ और के साथ नंबर की समानता का पता लगाने

इसके बजाय (दुर्भाग्य से अक्सर वास्तविक कोड में देखा गया) "कृति":

function isEven(n) {
    return n % 2 == 0;
}

function isOdd(n) {
    if (isEven(n)) {
        return false;
    } else {
        return true;
    }
}

आप समता की जाँच अधिक प्रभावी और सरल कर सकते हैं:

if(n & 1) {
    console.log("ODD!");
} else {
    console.log("EVEN!");
}

(यह वास्तव में जावास्क्रिप्ट के लिए न केवल मान्य है)

बिटवाइवर XOR के साथ दो इंटेगर की अदला-बदली (अतिरिक्त मेमोरी आवंटन के बिना)

var a = 11, b = 22;
a = a ^ b;
b = a ^ b;
a = a ^ b;
console.log("a = " + a + "; b = " + b);// a is now 22 and b is now 11

2 की शक्तियों द्वारा तेज़ गुणा या विभाजन

बाएं (दाएं) शिफ्टिंग बिट्स 2 से गुणा (विभाजित) के बराबर है। यह बेस 10 में समान है: यदि हम 13 " 2 -शिफ्ट" 2 स्थानों पर करते हैं, तो हमें 1300 या 13 * (10 ** 2) मिलते हैं। और अगर हम 3 जगहों पर 12345 और "राइट-शिफ्ट" लेते हैं और फिर दशमलव भाग को हटाते हैं, तो हमें 12 , या Math.floor(12345 / (10 ** 3)) । इसलिए यदि हम किसी वैरिएबल को 2 ** n से गुणा करना चाहते हैं, तो हम n बिट्स द्वारा केवल लेफ्ट-शिफ्ट कर सकते हैं।

console.log(13 * (2 ** 6)) //13 * 64 = 832
console.log(13    <<   6)  //          832

इसी प्रकार, 2 ** n द्वारा पूर्णांक विभाजन (फ्लोर्ड) करने के लिए, हम n बिट्स द्वारा सही बदलाव कर सकते हैं। उदाहरण:

console.log(1000 / (2 ** 4)) //1000 / 16 = 62.5
console.log(1000    >>   4)  //            62

यह नकारात्मक संख्याओं के साथ भी काम करता है:

console.log(-80 / (2 ** 3)) //-80 / 8 = -10
console.log(-80      >> 3)  //          -10

वास्तव में, अंकगणित की गति आपके कोड को चलाने में कितना समय लेती है, जब तक कि आप 100 लाख कंपटीशन के 100s के क्रम पर नहीं कर रहे हैं, इसकी संभावना नहीं है। लेकिन सी प्रोग्रामर इस तरह से प्यार करते हैं!



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow