Praktische Bit-Tricks
Gängige Techniken
Praktische Bit-Tricks ist eine kostenlose C Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.
Nützliche Bit-Tricks
Sobald Sie bitweise Operatoren verstehen, steht Ihnen eine Reihe kompakter Tricks zur Verfügung. Sie sind schnell und kommen in echtem Code häufig vor.
Sehen wir uns die gängigsten an.
#include <stdio.h>
int main(void) {
unsigned x = 6;
printf("x & 1 = %u (odd if 1)\n", x & 1);
return 0;
}Gerade oder ungerade
Das niedrigste Bit gibt die Parität an. x & 1 ist bei ungeraden Zahlen 1 und bei geraden Zahlen 0.
#include <stdio.h>
int main(void) {
for (unsigned x = 0; x < 5; x++) {
printf("%u is %s\n", x, (x & 1) ? "odd" : "even");
}
return 0;
}Auf Zweierpotenz prüfen
Eine positive Zahl ist genau dann eine Zweierpotenz, wenn genau ein Bit gesetzt ist. Der Ausdruck x & (x - 1) ist nur in diesem Fall 0.
#include <stdio.h>
int is_pow2(unsigned x) {
return x != 0 && (x & (x - 1)) == 0;
}
int main(void) {
printf("%d %d %d\n", is_pow2(16), is_pow2(18), is_pow2(1));
return 0;
}Niedrigstes gesetztes Bit löschen
x & (x - 1) löscht das niedrigste gesetzte Bit. Darauf basiert das schnelle Zählen gesetzter Bits.
#include <stdio.h>
int main(void) {
unsigned x = 0b10110;
printf("before: %u\n", x);
printf("after: %u\n", x & (x - 1));
return 0;
}Niedrigstes gesetztes Bit isolieren
x & (-x) isoliert das niedrigste gesetzte Bit, sodass nur dieses einzelne Bit aktiviert bleibt.
Dies beruht auf der Zweierkomplementdarstellung.
#include <stdio.h>
int main(void) {
unsigned x = 0b10110;
printf("lowest set bit = %u\n", x & (-x));
return 0;
}Gesetzte Bits zählen
Durch wiederholtes Löschen des niedrigsten gesetzten Bits lässt sich zählen, wie viele Bits gesetzt sind. Die Anzahl der Schritte entspricht dabei der Anzahl der gesetzten Bits.
#include <stdio.h>
int popcount(unsigned x) {
int n = 0;
while (x) { x &= (x - 1); n++; }
return n;
}
int main(void) {
printf("%d\n", popcount(255));
printf("%d\n", popcount(0b1010));
return 0;
}Ohne temporäre Variable vertauschen
Der XOR-Tausch vertauscht zwei Ganzzahlen ohne zusätzlichen Speicher.
#include <stdio.h>
int main(void) {
int a = 3, b = 8;
a ^= b; b ^= a; a ^= b;
printf("a=%d b=%d\n", a, b);
return 0;
}Auf Zweierpotenz aufrunden
Sie können einen vorzeichenlosen Wert auf die nächste Zweierpotenz aufrunden, indem Sie das höchste Bit nach unten ausbreiten und anschließend 1 addieren.
#include <stdio.h>
unsigned next_pow2(unsigned v) {
v--;
v |= v >> 1; v |= v >> 2; v |= v >> 4;
v |= v >> 8; v |= v >> 16;
return v + 1;
}
int main(void) {
printf("%u\n", next_pow2(17));
printf("%u\n", next_pow2(100));
return 0;
}Prüfen, ob sich Bits unterscheiden
Zwei Werte unterscheiden sich genau an den Stellen, an denen a ^ b gesetzte Bits enthält. Wenn Sie diese zählen, erhalten Sie die Hamming-Distanz.
#include <stdio.h>
int main(void) {
unsigned a = 0b1101, b = 0b1011;
unsigned diff = a ^ b;
int count = 0;
while (diff) { diff &= diff - 1; count++; }
printf("hamming distance = %d\n", count);
return 0;
}Absolutwert ohne Verzweigung
Mithilfe des Vorzeichenbits können Sie einen Absolutwert ohne ein if berechnen. Die Maske besteht bei negativen Werten nur aus Einsen und bei nichtnegativen Werten nur aus Nullen.
#include <stdio.h>
int main(void) {
int x = -42;
int mask = x >> 31;
int abs = (x + mask) ^ mask;
printf("abs = %d\n", abs);
return 0;
}Ein Bit per Index setzen
Kombinieren Sie Verschieben und OR, um eine beliebige Bitposition zu setzen, die zur Laufzeit berechnet wird.
#include <stdio.h>
int main(void) {
unsigned v = 0;
int positions[] = {1, 3, 5};
for (int i = 0; i < 3; i++) {
v |= (1u << positions[i]);
}
printf("v = %u\n", v);
return 0;
}Kurzer Test
Testen Sie Ihr Wissen über Bit-Tricks.
Zusammenfassung
Sie haben praktische Bit-Tricks kennengelernt:
x & 1prüft, ob eine Zahl gerade oder ungerade ist.x & (x - 1)löscht das niedrigste gesetzte Bit und erkennt Zweierpotenzen.x & (-x)isoliert das niedrigste gesetzte Bit.- Popcount, XOR-Tausch, Hamming-Distanz und Absolutwertberechnung ohne Verzweigung.
Lerne C mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 39
- Lektionen
- 144
Häufig gestellte Fragen
Ist die Lektion „Praktische Bit-Tricks“ kostenlos?
Ja — der vollständige Text von „Praktische Bit-Tricks“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Praktische Bit-Tricks“?
Gängige Techniken Du übst C Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C Academy zu starten?
Keine Vorkenntnisse erforderlich. C Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Praktische Bit-Tricks“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C Academy-Lektion Code schreiben und ausführen?
Ja. Jede C Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Bitweise Operatoren
- Shifts
- Bitmasken und Flags
- Praktische Bit-Tricks