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

Napište jeden výraz s literály 0x (hex), 0b (binární) a 0o (osmičkové), bitovými operátory & | ^ ~, posuvy << >> >>>, rotacemi a běžnou aritmetikou — výsledek se živě aktualizuje jako desítkový, šestnáctkový, osmičkový a dvojkový zápis při velikosti slova 8, 16, 32 nebo 64 bitů, se znaménkem nebo bez něj. Níže je klikací mřížka bitů, panel bitových operací pro dva operandy (AND / OR / XOR / NAND / NOR / NOT / posuvy / ROL / ROR) a nastavení, vynulování nebo přepnutí jednoho bitu. Pro prostý převod soustav bez bitové logiky viz Převodník soustav; pro statistiku Kalkulačka statistiky.
Velikost slova   Pohled   Operátory: & | ^ ~ << >> >>> + - * / % ( ) — jen celočíselná aritmetika, výsledky se zalamují podle velikosti slova.
DEC
HEX
OCT
BIN
Bity jsou zobrazeny od nejvýznamnějšího; ztlumené buňky jsou mimo aktuální velikost slova.
index bitu (0 = nejméně významný)
A =    B =  A a B přijímají celé výrazy (např. 1 &lt;&lt; 12).
Tabulka výsledků se zobrazí, jakmile se A i B zpracují. Posuvy a rotace berou počet z B.
Zkuste příklad:
Jak se chovají posuvy: &lt;&lt; ořezává zpět na velikost slova (bity přetékající nahoru zmizí). &gt;&gt;&gt; je vždy logický (bezznaménkový) posun. &gt;&gt; se řídí výběrem Zobrazení: aritmetický při znaménkovém režimu, logický při bezznaménkovém. Soukromí: celá kalkulačka běží v této kartě — žádný server, žádné ukládání.

Co je programátorská kalkulačka?

Programátorská kalkulačka počítá tak, jak počítače ukládají čísla: v slovech pevné šířky tvořených bity. Místo nekonečné číselné osy je 8bitové slovo kruh 256 hodnot, 32bitové kruh 4 294 967 296. Každý výsledek se zabalí zpět do tohoto kruhu a tytéž bity lze číst jako bezznaménkový počet (0 … 255), nebo jako znaménkovou hodnotu dvojkového doplňku (-128 … 127). Čtyři řádky soustav výše jsou tytéž bity zobrazené čtyřmi způsoby — upravte jeden a ostatní tři se řídí.

Proč programátoři žijí v šestnáctkové soustavě

Jedna šestnáctková číslice je přesně čtyři bity, takže bajt je vždy dvě šestnáctkové číslice, 32bitové slovo vždy osm. Šestnáctková soustava je dvojková soustava s přeskupenými nulami pro lidské oko:

BinárněHexDesítkově
1111 11110xFF255
0001 01100x1622
1000 00000x80128 (nebo -128 se znaménkem)

Dvojkový doplněk v jednom odstavci

Chcete-li číst slovo jako znaménkové, podívejte se na nejvyšší bit. Je-li 0, hodnota je prostě bezznaménkový počet. Je-li 1, odečtěte velikost kruhu: 8bitová 0xFF je 255 − 256 = −1. To je celý trik — -x a 0 - x dávají totožné bity, proto tentýž sčítací obvod funguje pro obojí. Změna znaménka je „obrať každý bit a přičti 1“: NOT(0x01) = 0xFE, +1 = 0xFF = −1.

Operátory posuvu na první pohled

OperátorNázevpříklad 8bitů (a = 0xF0)
a &lt;&lt; 1posuv doleva0xE0 — nejvyšší bit odpadne, dole vstoupí nula
a &gt;&gt; 1 (bez znaménka)logický posuv doprava0x78 — nuly vstupují nahoře
a &gt;&gt; 1 (se znaménkem, a = −16)aritmetický posuv doprava0xF8 = −8 — znaménkový bit se kopíruje
a &gt;&gt;&gt; 1vždy logický0x78 bez ohledu na výběr Zobrazení
rol(a, 1)rotace doleva0xE1 — odpadlý nejvyšší bit se vrátí dolů

Běžné chyby, kterým vám tato stránka pomůže vyhnout

Aritmetický posuv vs logický posuv: kopírování znaménkového bitu (aritmetický) a doplnění nulami (logický) se liší vždy, když je nejvyšší bit nastaven — přepněte výběr Zobrazení a sledujte, jak se 0xF0 &gt;&gt; 1 změní mezi 0x78 a 0xF8.
Překvapení 53 bitů: běžný číselný typ JavaScriptu je 64bitový float s pouhými 53 bezpečnými celočíselnými bity, takže 0xFFFFFFFFFFFFFFFF nelze přesně zapsat — tato stránka používá interně přesnou 64bitovou celočíselnou aritmetiku, takže každá šestnáctková číslice, kterou vidíte, je spolehlivá.
Pasti s plovoucí řádovou čárkou: 0.1 + 0.2 v plovoucí řádové čárce proslule dává 0.30000000000000004; tato kalkulačka je záměrně jen celočíselná — dělení se zkracuje směrem k nule, přesně jako / v C u celých čísel.
Úvodní nuly: ve starém C literál jako 052 znamenal osmičkový. Zde je desítková soustava obyčejné číslice a osmičková potřebuje předponu 0o, takže nic není nejednoznačné.

Časté dotazy

Jaké je největší číslo? — 64bitové bez znaménka: 18 446 744 073 709 551 615 (0xFFFFFFFFFFFFFFFF); se znaménkem: ±9 223 372 036 854 775 808.
Proč se 1 &lt;&lt; 8 změnilo na 0? — velikost slova je 8 bitů; bit 8 neexistuje a maska jej zahodí. Přepněte na 16/32/64 bitů, aby zůstal.
Co dělá ~? — bitová negace: každý bit se v aktuální velikosti slova převrátí, takže ~0 jsou samé jedničky (255 / 65535 / −1 …).
Je tu plovoucí řádová čárka? — ne, jen celá čísla; pro floaty, goniometrii a funkce použijte Vědeckou kalkulačku.
Opouští něco můj počítač? — ne: žádný server, žádné ukládání, žádná analytika; zavřete kartu a vše je pryč.