يحدث أنه من الضروري تعداد كل متواليات البت ذات طول معين. أو بعبارة أخرى ، كرر كل الخيارات الممكنة ، حيث يتم تحديد حالة من حالتين ممكنتين لكل كائن.
في مثل هذه الحالات ، من الممكن تنفيذ التعداد باستخدام أقنعة البت. ميزة هذا النهج هي أن هذا الكود يعمل بشكل غير متكرر ويعمل على الأرقام بدلاً من المجموعات أو ما شابه ، مما يحسن الأداء بشكل كبير.
الكود العام باستخدام bitmasks موضح أدناه:
إنتن. // عدد الكائنات o (طول تسلسل البت)
لـ (int mask = 0؛ mask & lt؛ (1 & lt؛ & lt؛ n)؛ mask ++) {// حلقة عبر جميع الأرقام من 0 إلى 2 ^ n - 1 ، حيث يتوافق كل رقم مع قناع بت
// قناع الرقم الحالي هو قناع بت ، حيث تحدد البتة i حالة الكائن من الدرجة الأولى
لـ (int i = 0؛ i & lt؛ n؛ i ++) {// كرر عبر n بت لفهم الحالة التي يمتلكها كل كائن
if ((1 & lt؛ & lt؛ i) & amp؛ mask) {// تحقق مما إذا كانت البتة i تساوي واحدًا
// معالجة الخيار الذي يكون للكائن i-th الحالة & # 39 ؛ 1 & # 39 ؛
}
else {// الحالة عندما تكون البتة i صفرية
// معالجة الخيار الذي هو الكائن الأول من الحالة & # 39 ؛ 0 & # 39 ؛
}
}
}
يتم تشغيل هذا الرمز في O (2 ^ n * f (n)) ، حيث f (n) هو الوقت الذي تستغرقه في معالجة ملف قابل للتكرار.