Programozói számológép & bitenkénti számológép

Egyetlen kifejezés adható meg a 0x hexa, 0b bináris és 0o oktális literálokkal, a bitenkénti operátorokkal & | ^ ~, eltolásokkal << >> >>>, forgatásokkal és egyszerű aritmetikával — az eredmény élőben frissül tizedes, hexadecimális, oktális és bináris alakban 8, 16, 32 vagy 64 bites szóméretnél, előjeles vagy előjel nélküli módban. Alatta kattintható bitrács, kétoperandusos bitenkénti panel (AND / OR / XOR / NAND / NOR / NOT / eltolások / ROL / ROR) és egybites beállítás / törlés / átkapcsolás található. Bitlogika nélküli egyszerű számrendszer-átváltáshoz a Matematikai átváltó szolgál, statisztikához a Statisztikai számológép.
Szóméret   Nézet   Operátorok: & | ^ ~ << >> >>> + - * / % ( ) — csak egész aritmetika, az eredmények a szóméret szerint körbefordulnak.
DEC
HEX
OCT
BIN
A bitek a legnagyobb helyiértéktől a legkisebb felé láthatók; a halványított cellák az aktuális szóméreten kívül esnek.
bitindex (0 = legkisebb helyiértékű)
A =    B =  A és B teljes kifejezéseket fogad el (pl. 1 << 12).
Az eredménytábla megjelenik, amint A és B is feldolgozható. Az eltolások és forgatások számláló értékét B adja.
Egy példa kipróbálható:
Hogyan viselkednek az eltolások: << visszaigazítja a szóméretre (a felső szélen kieső bitek elvesznek). >>> mindig logikai (előjel nélküli) eltolás. >> a Nézet választót követi: előjeles módban aritmetikai, előjel nélküli módban logikai eltolás. Adatvédelem: az egész számológép ebben a lapban fut — nincs szerver, nincs tárolás.

Mi a programozói számológép?

A programozói számológép úgy végez aritmetikát, ahogy a számítógépek tárolják: rögzített szélességű bitszavakban. Egy végtelen számegyenes helyett egy 8 bites szó 256 értékből álló körön belül van, egy 32 bites szó 4 294 967 296-os körön. Minden eredmény visszakerül abba a körbe, és ugyanezek a bitek olvashatók előjel nélküli számlálóként (0 … 255) vagy előjeles kettes komplemens értékként (-128 … 127). A fenti négy számrendszer-sor ugyanazok a bitek négyféleképpen megjelenítve — az egyiket szerkesztve a másik három követi.

Miért használnak a programozók hexadecimális számokat?

Egy hexadecimális számjegy pontosan négy bit, így egy bájt mindig két hexa számjegy, egy 32 bites szó mindig nyolc. A hexa a bináris, amelyet az emberi szemnek könnyebb olvasni, a nullák csoportosításával:

BinárisHexDecimális
1111 11110xFF255
0001 01100x1622
1000 00000x80128 (vagy -128 előjelesen)

Kettes komplemens egy bekezdésben

Előjelesként való olvasáskor a legfelső bitet kell megvizsgálni. Ha 0, az érték egyszerűen az előjel nélküli számláló. Ha 1, le kell vonni a kör méretét: a 8 bites 0xFF értéke 255 − 256 = −1. Ez az egész trükk — a -x és 0 - x azonos biteket ad, ezért ugyanaz az összeadóáramkör működik mindkettőnél. Az előjelváltás: „minden bitet invertálni, majd 1-et hozzáadni”: NOT(0x01) = 0xFE, +1 = 0xFF = −1.

Az eltolóoperátorok áttekintése

OperátorNév8 bites példa (a = 0xF0)
a << 1balra eltolás0xE0 — a legfelső bit kiesik, alulról nulla érkezik
a >> 1 (előjel nélküli)logikai jobbra eltolás0x78 — nullák érkeznek felülről
a >> 1 (előjeles, a = −16)aritmetikai jobbra eltolás0xF8 = −8 — az előjelbit átmásolódik
a >>> 1mindig logikai0x78 a Nézet választótól függetlenül
rol(a, 1)forgatás balra0xE1 — a kiesett legfelső bit alulra visszatér

Gyakori hibák, amelyeket ez az oldal segít elkerülni

Aritmetikai és logikai eltolás: az előjelbit másolása (aritmetikai) és a nullákkal való kitöltés (logikai) mindig különbözik, ha a legfelső bit 1 — a Nézet választót váltva figyelhető meg, ahogy a 0xF0 >> 1 0x78-ról 0xF8-ra változik.
Az 53 bites meglepetés: a JavaScript szokásos Number típusa 64 bites lebegőpontos szám, amelynek csak 53 biztonságos egész bitje van, ezért a 0xFFFFFFFFFFFFFFFF nem ábrázolható pontosan — ez az oldal belsőleg pontos 64 bites egész aritmetikát használ, így minden látható hexa számjegy megbízható.
Lebegőpontos csapdák: a 0,1 + 0,2 lebegőpontban híresen 0,30000000000000004 értéket ad; ez a számológép tervezésből csak egészekkel dolgozik — az osztás nulla felé csonkít , pontosan úgy, mint a C / operátora egészeknél.
Vezető nullák: a régi C-ben a 052 literál oktálist jelentett. Itt a tizedes számok sima számjegyek, az oktálishoz pedig a 0o előtag kell, így semmi nem kétértelmű.

GYIK

Mi a legnagyobb szám? — 64 bites előjel nélküli: 18 446 744 073 709 551 615 (0xFFFFFFFFFFFFFFFF); előjeles: ±9 223 372 036 854 775 808.
Miért lett 1 << 8 nulla? — a szóméret 8 bit; a 8. bit nem létezik, a maszk eldobja. A 16/32/64 bites méretre váltva megmarad.
Mit csinál a ~? — bitenkénti NOT: minden bit megfordul az aktuális szóméreten belül, így a ~0 csupa egyes (255 / 65535 / −1 …).
Van lebegőpontos számítás? — nincs, csak egészekkel; lebegőpontra, trigonometriára és függvényekre a Tudományos számológép szolgál.
Elhagy-e bármit a gép? — nem: nincs szerver, nincs tárolás, nincs analitika; a lap bezárásával minden megszűnik.