C Academy · Lektion

Praktische Bit-Tricks

Gängige Techniken

Lektion 4 von 413 Schritte

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 & 1 prü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.
Kostenlos starten

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

  1. Bitweise Operatoren
  2. Shifts
  3. Bitmasken und Flags
  4. Praktische Bit-Tricks
← Zurück zu C Academy