ऐसा होता है कि एक निश्चित लंबाई के सभी बिट अनुक्रमों को सूचीबद्ध करना आवश्यक है। या दूसरे शब्दों में, सभी संभावित विकल्पों पर पुनरावृति करें, जहां प्रत्येक वस्तु के लिए दो संभावित अवस्थाओं में से एक का चयन किया जाता है।
ऐसी स्थितियों में, बिट मास्क का प्रयोग करके गणना लागू करना संभव है। इस दृष्टिकोण का लाभ यह है कि ऐसे कोड गैर-पुनरावर्ती रूप से काम करते हैं और संग्रह या इसी तरह के बजाय संख्याओं पर काम करते हैं, जिससे प्रदर्शन में काफी सुधार होता है।
बिटमास्क का उपयोग करने वाला सामान्य कोड नीचे दिया गया है:
इंटन; // ऑब्जेक्ट्स की संख्या (बिट अनुक्रम की लंबाई)
के लिए (इंट मास्क = 0; मास्क < (1 << n); मास्क++) {// 0 से 2^n - 1 तक सभी नंबरों के माध्यम से लूप करें, जहां प्रत्येक संख्या एक बिटमास्क से मेल खाती है
// वर्तमान नंबर मास्क एक बिटमास्क है, जहां i-th बिट i-th ऑब्जेक्ट की स्थिति को निर्दिष्ट करता है
for (int i = 0; i < n; i++) {// n बिट्स पर पुनरावृति यह समझने के लिए कि प्रत्येक वस्तु की स्थिति क्या है
अगर ((1 << i) और मास्क) {// जांचें कि क्या i-th बिट एक के बराबर है
// विकल्प को प्रोसेस करें कि i-th ऑब्जेक्ट की स्थिति '1'
}
और {// केस जब आई-वें बिट शून्य है
// विकल्प को संसाधित करें कि राज्य की i-वें वस्तु '0'
}
}
}
पूर्व>
यह कोड O(2^n * f(n)) में चलता है, जहां f(n) वह समय है जब आपको एक विशेष पुनरावृत्ति को संसाधित करने में समय लगता है।