Competitive Programming Academy · leksjon

Sett, nullstill og inverter en bit

Endre én bit med masker

Leksjon 2 av 413 trinn

Sett, nullstill og inverter en bit er en gratis leksjon i Competitive Programming Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Competitive Programming Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Competitive Programming Academy inneholder totalt 4 leksjoner.

Rediger én bit om gangen

Noen ganger trenger du å endre én enkelt bit uten å påvirke de andre. Trikset er å bygge en maske som treffer nøyaktig den biten du ønsker. 🎯

Lag en maske med én bit

Skift 1 til posisjonen du bryr deg om, så får du en maske med én bit slått på. Posisjon 0 er biten lengst til høyre.

mask = 1 << 3  # 0b1000, targets bit 3

Sett en bit med OR

Slå på en bit ved å bruke OR på tallet og masken. OR tvinger den aktuelle posisjonen til 1 og lar alle andre biter være urørt. Dette kaller vi å sette en bit.

n = 0b0001
n |= (1 << 2)  # 0b0101

Å sette en bit er idempotent

Hvis biten allerede er 1, endrer det ingenting å sette den på nytt. OR med en maske er trygt å gjenta, noe som gjør det pålitelig i løkker. 👍

Den inverterte masken

For å nullstille en bit trenger De en maske der den aktuelle posisjonen er AV, og alle andre er PÅ. Operatoren NOT (~) inverterer hver bit i den enkle masken.

clear = ~(1 << 2)  # ...11111011

Nullstill en bit med AND

Bruk AND på tallet og den inverterte masken for å tvinge denne biten til 0, samtidig som resten beholdes. Slik kan De nullstille én enkelt bit.

n = 0b0111
n &= ~(1 << 1)  # 0b0101

Veksle en bit med XOR

XOR med en maske for én enkelt bit inverterer den aktuelle posisjonen: 0 blir 1, og 1 blir 0. Denne vekslingen er den ryddigste énlinjeren av de tre.

n = 0b0101
n ^= (1 << 0)  # 0b0100

Sjekk om en bit er satt

Bruk AND på tallet og en maske for én enkelt bit. Hvis resultatet er ulikt null, er denne biten satt; hvis det er null, er biten avslått.

n = 0b0100
on = (n & (1 << 2)) != 0  # True

Les biten som 0 eller 1

Skift tallet mot høyre for å flytte målbitten til nederste posisjon, og bruk deretter AND med 1. Da får De nøyaktig bitverdien, 0 eller 1.

n = 0b1010
bit = (n >> 1) & 1  # 1

Hvorfor bitendringer er viktige

Ved å sette, nullstille og veksle kan De lagre mange PÅ- eller AV-flagg i ett heltall. Dette er kjernen i kompakt tilstand med bitmasker i konkurranseoppgaver.

Pass på off-by-one-feil

Bitposisjoner starter på 0, så bit k ligger på verdien 1 skiftet k posisjoner mot venstre. Det er svært vanlig at nybegynnere blander sammen indeksen her.

Hurtigsjekk

Velg riktig operasjon for å nullstille en bit.

Oppsummering: Sett, nullstill, veksle

OR setter, AND med NOT nullstiller, og XOR veksler én enkelt bit. Når De behersker disse tre maskene, kan De kontrollere hvilken som helst bit. 🎉

Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «Sett, nullstill og inverter en bit» gratis?

Ja – hele teksten i «Sett, nullstill og inverter en bit» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Competitive Programming Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Competitive Programming Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Sett, nullstill og inverter en bit»?

Endre én bit med masker Du øver på Competitive Programming Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Competitive Programming Academy?

Ingen tidligere erfaring er nødvendig. Competitive Programming Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Sett, nullstill og inverter en bit»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Competitive Programming Academy-leksjonen?

Ja. Alle Competitive Programming Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. AND, OR, XOR og skift
  2. Sett, nullstill og inverter en bit
  3. Tell biter og finn laveste satte bit
  4. Bitmasker som små mengder
← Tilbake til Competitive Programming Academy