Programmerer-kalkulator & bitkalkulator

Skriv inn ett uttrykk med 0x-heksadesimale, 0b-binære og 0o-oktale litteraler, de bitvise operatorene & | ^ ~, skift << >> >>>, rotasjoner og vanlig aritmetikk — resultatet oppdateres direkte som desimal, heksadesimal, oktal og binær ved ordstørrelse 8, 16, 32 eller 64 bit, signert eller usignert. Nedenfor finnes et klikkbart bitrutenett, et bitvis panel med to operander (OG / ELLER / EKSKLUSIV ELLER / NAND / NOR / IKKE / skift / ROL / ROR) og enkel bit sett / nullstill / veksle. For vanlig grunntallskonvertering uten bitlogikk, se Matteomformer; for statistikk, Statistikkalkulator.
Ordstørrelse   Visning   Operatorer: & | ^ ~ << >> >>> + - * / % ( ) — bare heltallsregning; resultatene vikles rundt ved ordstørrelsen.
DEC
HEX
OCT
BIN
Bitene vises med mest signifikant først; nedtonede celler er utenfor den gjeldende ordstørrelsen.
bitindeks (0 = minst signifikant)
A =    B =  A og B godtar fulle uttrykk (f.eks. 1 << 12).
Resultattabellen vises når både A og B er tolket. Skift og rotasjoner tar antallet fra B.
Prøv et eksempel:
Slik oppfører skift seg: << maskerer tilbake til ordstørrelsen (bit som faller av toppen, er borte). >>> er alltid et logisk (usignert) skift. >> følger velgeren Visning: aritmetisk i signert modus, logisk i usignert modus. Personvern: hele kalkulatoren kjører i denne fanen — ingen server, ingen lagring.

Hva er en programmerer-kalkulator?

En programmerer-kalkulator regner slik datamaskiner lagrer tall: i ord med fast bitbredde. I stedet for én endeløs tallinje er et 8-bits ord en sirkel med 256 verdier, og et 32-bits ord en sirkel med 4 294 967 296. Hvert resultat vikles tilbake inn i sirkelen, og de samme bitene kan leses som en usignert teller (0 … 255) eller som en signert verdi i tokomplement (-128 … 127). De fire grunntallsradene over er de samme bitene vist på fire måter — endres én, følger de tre andre med.

Hvorfor programmerere lever i heksadesimal

Ett heksadesimalt siffer er nøyaktig fire bit, så en byte er alltid to heksadesimale siffer, og et 32-bits ord alltid åtte. Heks er binær med nullene gruppert om igjen for menneskeøyne:

BinærHeksDesimal
1111 11110xFF255
0001 01100x1622
1000 00000x80128 (eller -128 signert)

Tokomplement i ett avsnitt

For å lese et ord som signert, se på toppbiten. Er den 0, er verdien bare den usignerte telleren. Er den 1, trekk fra sirkelstørrelsen: en 8-bits 0xFF er 255 − 256 = −1. Det er hele trikset — -x og 0 - x gir identiske bit, og derfor fungerer den samme adderermaskinvaren for begge. Fortegnsskiftet er "snu hver bit, legg til 1": IKKE(0x01) = 0xFE, +1 = 0xFF = −1.

Skiftoperatorene på et blikk

OperatorNavn8-bits eksempel (a = 0xF0)
a << 1venstreskift0xE0 — toppbiten faller av, null kommer inn nederst
a >> 1 (usignert)logisk høyreskift0x78 — nuller kommer inn øverst
a >> 1 (signert, a = −16)aritmetisk høyreskift0xF8 = −8 — fortegnsbiten kopieres
a >>> 1alltid logisk0x78 uavhengig av visningsvelgeren
rol(a, 1)rotasjon venstre0xE1 — den avfalne toppbiten kommer inn igjen nederst

Vanlige feil som denne siden hjelper med å unngå

Aritmetisk skift kontra logisk skift: å kopiere fortegnsbiten (aritmetisk) og fylle med nuller (logisk) skiller seg når toppbiten er satt — bytt visningsvelgeren og se 0xF0 >> 1 endres mellom 0x78 og 0xF8.
Overraskelsen med 53 bit: JavaScripts vanlige tall er et 64-bits flyttall med bare 53 sikre heltallsbit, så 0xFFFFFFFFFFFFFFFF kan ikke representeres eksakt — denne siden bruker eksakt 64-bits heltallsaritmetikk internt, så hvert heksadesimalt siffer som vises, er pålitelig.
Flyttallsfeller: 0.1 + 0.2 gir berømt 0.30000000000000004 i flyttall; denne kalkulatoren er bare for heltall med vilje — divisjon avkortes mot null, akkurat som C sin / på heltall.
Ledende nuller: i gammel C betydde et litteral som 052 oktal. Her er desimal vanlige sifre, og oktal krever prefikset 0o, så ingenting er tvetydig.

Ofte stilte spørsmål

Hva er det største tallet? — 64-bits usignert: 18 446 744 073 709 551 615 (0xFFFFFFFFFFFFFFFF); signert: ±9 223 372 036 854 775 808.
Hvorfor ble 1 << 8 til 0? — ordstørrelsen er 8 bit; bit 8 finnes ikke, og masken fjerner den. Bytt til 16/32/64 bit for å beholde den.
Hva gjør ~? — bitvis IKKE: hver bit snus innenfor den gjeldende ordstørrelsen, så ~0 er alle enere (255 / 65535 / −1 …).
Finnes det flyttall? — nei, bare heltall; bruk Vitenskapelig kalkulator for flyttall, trigonometri og funksjoner.
Forlater noe maskinen? — nei: ingen server, ingen lagring, ingen analyse; lukk fanen, så er alt borte.