Sett, nullstill og inverter en bit
Endre én bit med masker
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 3Sett 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) # ...11111011Nullstill 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) # 0b0101Veksle 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) # 0b0100Sjekk 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 # TrueLes 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 # 1Hvorfor 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. 🎉
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
- AND, OR, XOR og skift
- Sett, nullstill og inverter en bit
- Tell biter og finn laveste satte bit
- Bitmasker som små mengder