Programátorská kalkulačka a bitová kalkulačka

Zadá sa jeden výraz s literálmi 0x (šestnástkové), 0b (dvojkové) a 0o (osmičkové), bitovými operátormi & | ^ ~, posunmi << >> >>>, rotáciami a bežnou aritmetikou — výsledok sa priebežne aktualizuje ako desiatkový, šestnástkový, osmičkový a dvojkový zápis pri veľkosti slova 8, 16, 32 alebo 64 bitov, so znamienkom alebo bez neho. Nižšie sú klikateľná mriežka bitov, bitový panel pre dva operandy (AND / OR / XOR / NAND / NOR / NOT / posuny / ROL / ROR) a nastavenie, vynulovanie a prepnutie jedného bitu. Pre bežný prevod sústav bez bitovej logiky slúži Prevodník sústav; pre štatistiku Štatistická kalkulačka.
Veľkosť slova   Pohľad   Operátory: & | ^ ~ << >> >>> + - * / % ( ) — len celočíselná matematika, výsledky sa obaľujú podľa veľkosti slova.
DEC
HEX
OCT
BIN
Bity sa zobrazujú od najvýznamnejšieho; stlmené bunky sú mimo aktuálnej veľkosti slova.
index bitu (0 = najmenej významný)
A =    B =  A a B prijímajú celé výrazy (napr. 1 << 12).
Tabuľka výsledkov sa zobrazí, akonáhle sa A aj B dajú spracovať. Posuny a rotácie berú počet posunov z B.
Vyskúšať príklad:
Ako sa správajú posuny: << orezáva späť na veľkosť slova (bity, ktoré pretečú cez hornú hranicu, zmiznú). >>> je vždy logický (bez znamienka) posun. >> sa riadi výberom Zobrazenie: v režime so znamienkom aritmetický, v režime bez znamienka logický. Súkromie: celá kalkulačka beží na tejto karte — žiadny server, žiadne ukladanie.

Čo je programátorská kalkulačka?

Programátorská kalkulačka počíta tak, ako počítače ukladajú čísla: v slovách pevnej šírky z bitov. Namiesto nekonečnej číselnej osi je 8-bitové slovo kruh 256 hodnôt, 32-bitové kruh 4 294 967 296 hodnôt. Každý výsledok sa zabalí späť do tohto kruhu a tie isté bity možno čítať ako počet bez znamienka (0 … 255), alebo ako hodnotu so znamienkom v dvojkovom doplnku (-128 … 127). Štyri riadky sústav vyššie sú tie isté bity zapísané štyrmi spôsobmi — upraví sa jeden riadok a ostatné tri sa prispôsobia.

Prečo programátori žijú v šestnástkovej sústave

Jedna šestnástková číslica presne zodpovedá štyrom bitom, takže bajt je vždy dve šestnástkové číslice a 32-bitové slovo vždy osem. Šestnástková sústava je dvojková s nulami zoskupenými pre ľudské oko:

BinárneHexDesiatkovo
1111 11110xFF255
0001 01100x1622
1000 00000x80128 (alebo -128 so znamienkom)

Dvojkový doplnok v jednom odseku

Pri čítaní slova so znamienkom sa pozrie na najvyšší bit. Ak je 0, hodnota je priamo počet bez znamienka. Ak je 1, odčíta sa veľkosť kruhu: 8-bitová 0xFF je 255 − 256 = −1. To je celý trik — -x a 0 - x dávajú identické bity, a preto ten istý sčítací obvod funguje pre oboje. Zmena znamienka je „invertuj každý bit a pripočítaj 1“: NOT(0x01) = 0xFE, +1 = 0xFF = −1.

Operátory posunu na prvý pohľad

OperátorNázovpríklad 8-bitového slova (a = 0xF0)
a << 1ľavý posun0xE0 — najvyšší bit odpadne, nula vstupuje zdola
a >> 1 (bez znamienka)logický pravý posun0x78 — nuly vstupujú zhora
a >> 1 (so znamienkom, a = −16)aritmetický pravý posun0xF8 = −8 — znamienkový bit sa kopíruje
a >>> 1vždy logický0x78 bez ohľadu na výber Zobrazenie
rol(a, 1)rotácia doľava0xE1 — odpadnutý najvyšší bit sa vracia zdola

Bežné chyby, ktorým sa táto stránka pomáha vyhnúť

Aritmetický posun verzus logický posun: kopírovanie znamienkového bitu (aritmetický) a dopĺňanie núl (logický) sa líšia vždy, keď je najvyšší bit nastavený — pri zmene výberu Zobrazenie sa 0xF0 >> 1 zmení z 0x78 na 0xF8.
Prekvapenie s 53 bitmi: bežný typ Number v JavaScripte je 64-bitové číslo s pohyblivou rádovou čiarkou s len 53 bezpečnými bitmi celého čísla, takže 0xFFFFFFFFFFFFFFFF sa nedá vyjadriť presne — táto stránka interne používa presnú 64-bitovú celočíselnú aritmetiku, takže každá šestnástková číslica, ktorá sa zobrazí, je spoľahlivá.
Pasce s pohyblivou rádovou čiarkou: 0.1 + 0.2 v pohyblivej rádovej čiarke dáva známe 0.30000000000000004; táto kalkulačka je zámerne len celočíselná — delenie sa orezáva smerom k nule, presne ako / v C pri celých číslach.
Úvodné nuly: v starom C literál ako 052 znamenal osmičkovú sústavu. Tu je desiatkový zápis obyčajné číslice a osmičková vyžaduje prefix 0o, takže nič nie je nejednoznačné.

FAQ

Aké je najväčšie číslo? — 64-bitové bez znamienka: 18 446 744 073 709 551 615 (0xFFFFFFFFFFFFFFFF); so znamienkom: ±9 223 372 036 854 775 808.
Prečo sa 1 << 8 zmenilo na 0? — veľkosť slova je 8 bitov; bit 8 neexistuje a maska ho zahodí. Na jeho zachovanie sa treba prepnúť na 16/32/64 bitov.
Čo robí ~? — bitová negácia: každý bit sa v rámci aktuálnej veľkosti slova prevráti, takže ~0 sú samé jednotky (255 / 65535 / −1 …).
Je tu pohyblivá rádová čiarka? — nie, len celé čísla; na desatinné čísla, goniometriu a funkcie slúži Vedecká kalkulačka.
Opúšťa niečo zariadenie? — nie: žiadny server, žiadne ukladanie, žiadna analytika; zatvorením karty sa všetko odstráni.