bitlvl
SR

Bitmask kalkulator

Ukucajte pozicije bitova da napravite masku, ili nalepite masku da vidite koje bitove sadrži. Kliknite na bitove u registru da ih promenite. Dajte bitovima imena i alat će napisati konstante umesto vas.

Širina

Imenovane zastavice

Dajte postavljenim bitovima imena i dobijte konstante u jeziku koji koristite. Ostavite ime prazno da preskočite taj bit.

  

Rezultati i poruke ovog alata prikazuju se na engleskom.

Šta je bit maska

Bit maska je broj koji se koristi zbog svog obrasca bitova, a ne zbog vrednosti. Svaka pozicija bita predstavlja jednu opciju uključeno/isključeno, pa jedan ceo broj može da drži 8, 32 ili 64 zastavice odjednom. Dozvole (rwx), režimi otvaranja datoteka, bitovi mogućnosti CPU-a, mrežne maske i skupovi opcija u gotovo svakom C API-ju su bit maske.

Bit n ima vrednost 2ⁿ, pa je maska sa postavljenim bitovima 0, 2 i 7 jednaka 1 + 4 + 128 = 133 = 0x85 = 1000 0101. Da biste napravili konstantu u kodu, pomerite jedinicu na tu poziciju: 1 << 7.

Korišćenje maske

Želite da…Uradite ovo
Proverite da li je zastavica postavljena(value & FLAG) != 0
Proverite da li su sve od više zastavica postavljene(value & MASK) == MASK
Postavite zastavicuvalue |= FLAG
Obrišete zastavicuvalue &= ~FLAG
Preokrenete zastavicuvalue ^= FLAG
Izdvojite polje bitova 4–7(value >> 4) & 0xF
Napravite masku za bitove lo..hi((1 << (hi - lo + 1)) - 1) << lo

Čitanje maske koju ste dobili

Pretvorite vrednost u binarni oblik i numerišite bitove zdesna, počev od 0. Svaka jedinica je postavljena zastavica. Alat iznad to radi za svaku vrednost koju nalepite i prikazuje pozicije kao kompaktnu listu, na primer 0-2, 5, 7.

Primeri

Unix dozvole 0755
bitovi 0, 2, 3, 5, 6, 7, 8 → 1 1110 1101
Maska podmreže /20
gornjih 20 od 32 bita postavljeno → 0xFFFFF000
Donji nibl
bitovi 0-3 → 0x0F

Pitanja

Zašto pozicije bitova počinju od 0?

Zato što bit n ima vrednost 2ⁿ, a 2⁰ = 1 je krajnji desni bit. Numerisanje od 0 čini da se aritmetika poklapa: pomeranje za n stavlja jedinicu na bit n.

Koja je razlika između bit maske i bit polja?

Bit maska je broj sa kojim radite AND ili OR. Bit polje je grupa susednih bitova unutar veće vrednosti koji zajedno čuvaju mali broj (na primer bitovi 4–7 koji drže vrednost 0–15). Za čitanje ili upis bit polja koristite masku i pomeranje.

Koliko zastavica staje u ceo broj?

Jedna po bitu: 8 u bajt, 32 u 32-bitni int, 64 u 64-bitni int. Ako vam treba više, koristite niz celih brojeva ili namenski bitset tip.

Zašto 1 << n umesto da napišem broj?

Dokumentuje na koji bit mislite i ne može da se pogrešno otkuca kao drugi stepen dvojke. Kompajleri ga svode na konstantu, pa nema troška u vreme izvršavanja.

Da li alat ispravno radi sa 64-bitnim maskama?

Da. Koristi cele brojeve proizvoljne preciznosti, pa su sva 64 bita tačna, uključujući bit 63.