0 Tage Serie
cpp / expert
Snippet

Bitmasken-gesteuerte Kontrolllogik

Verwendung von bitweisen Operatoren und Enum-Classes zur effizienten Verwaltung komplexer Kontrollfluss-Zustände. Dieser Ansatz packt mehrere boolesche Flags in ein einzelnes Byte, was Speicher und Branch-Prediction optimiert.

snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <cstdint>
enum class Permissions : uint8_t {
Read = 1 << 0, // 0001
Write = 1 << 1, // 0010
Exec = 1 << 2 // 0100
};
inline bool has_permission(uint8_t mask, Permissions p) {
return (mask & static_cast<uint8_t>(p)) != 0;
}
void process_request(uint8_t mask) {
if (has_permission(mask, Permissions::Read)) {
// Execute read logic
}
if (has_permission(mask, Permissions::Write)) {
// Execute write logic
}
}
Erklärung
1
1 << 0
Verwendet den Bit-Shift-Operator, um eindeutige Zweierpotenz-Werte für jedes Flag zu definieren.
2
mask & static_cast<uint8_t>(p)
Führt ein bitweises UND aus, um zu prüfen, ob ein bestimmtes Bit in der Flag-Maske gesetzt ist.