Számrendszer-átalakító negatív számok támogatásával

A számítógépek világa nullákon és egyeseken fut, de az emberek tízes számrendszerben gondolkodnak. A programozók pedig? Nekik mindent meg kell érteniük e kettő között. Akár alacsony szintű kódot hibakeres, színeket állít be CSS-ben, IP-maszkokat számol, vagy informatikai feladatokat old meg, szembesül a számok közötti átváltás szükségességével.

A Windowsban vagy mobiltelefonon lévő hagyományos számológépek gyakran lassúak és nehézkesek. A mi intelligens számrendszer-átalakítónkat fejlesztők tervezték fejlesztőknek. Azonnali, valós idejű konverziót, extrém nagy számok támogatását kínálja, és az egyik kevés online eszköz, amely helyesen kezeli a negatív számokat bináris formában.

Mit tud ez a számrendszer-átalakító?

Ennek a widgetnek a fejlesztése során a programozók leggyakoribb problémáinak megoldására összpontosítottunk:

  1. Valós idejű reakcióképesség: Nincs “Számítás” gomb. Kezdjen el írni a HEX mezőbe, és azonnal látja, hogyan változik a BIN és a DEC.
  2. Negatív számok támogatása (előjeles egész számok): A legtöbb online konverter elakad, ha beírja a -5-öt. Mi nem. A bitmélység (8, 16, 32, 64 bit) kiválasztásával szimuláljuk a processzor pontos viselkedését az úgynevezett kettes komplemens segítségével.
  3. Bináris kód olvashatósága: A 1110101011011110 nézése fárasztó. Eszközünk automatikusan formázza a kimenetet 4 bitenként (nibble) 1110 1010 1101 1110 formátumra, ami radikálisan csökkenti a másolás során előforduló hibákat.
  4. BigInt támogatás: 64 bites számot vagy hash-t kell átalakítania? A szabványos JavaScript a $2^{53}$ számnál áll meg. Motorunk tetszőlegesen hosszú számokat képes kezelni “előjel nélküli” módban.

Útmutató a számrendszerekhez: Mikor melyiket használjuk?

1. Tízes számrendszer (DEC - Decimal)

  • Alap: 10 (számjegyek 0-9)
  • Használat: Hétköznapi élet, pénzügyek, ciklusok számolása kódban.
  • Érdekesség: A számítógépek nem értik, binárisra kell átalakítaniuk.

2. Kettes számrendszer (BIN - Binary)

  • Alap: 2 (számjegyek 0, 1)
  • Használat: Gépi kód, logikai kapuk, IP-cím maszkolása.
  • Tipp: Minden számjegy egy bitet reprezentál. 8 bit alkot 1 bájtot (Byte).

3. Tizenhatos számrendszer (HEX - Hexadecimal)

  • Alap: 16 (számjegyek 0-9, betűk A-F)
  • Használat: Bináris kód kompakt írása. Egy HEX karakter pontosan 4 bitet (nibble) reprezentál. Két karakter (pl. FF) egy teljes bájtot reprezentál.
  • Példák:
    • Színek a weben: #FF5733 (Piros, Zöld, Kék).
    • MAC-címek: 00:1A:2B:3C:4D:5E.
    • Memória dumpok.

4. Nyolcas számrendszer (OCT - Octal)

  • Alap: 8 (számjegyek 0-7)
  • Használat: Történelmileg régebbi számítógépek, ma főleg Linux jogosultságok (chmod).
  • Példa: A chmod 755 parancs az rwx-rx-rx (olvasás, írás, futtatás) jogosultságokat állítja be.

Hogyan kezeljük helyesen a negatív számokat?

Ez a konverterünk legfejlettebb funkciója. A számítógép memóriájában nem létezik “mínusz” előjel. Ahhoz, hogy a számítógép negatív számot tároljon, leggyakrabban a kettes komplemens (Two’s Complement) módszert használja.

A negatív szám átalakításának eredménye azonban attól függ, hogy a változó hány bitet foglal el. Ezért a felső sávban található a Bitmélység kapcsoló.

Példa: Hogyan néz ki a -5 szám?

Próbálja ki maga a konverterünkben:

  1. Állítsa a szélességet 8-bitre.

    • Adja meg DEC-ben: -5.
    • HEX eredmény: FB.
    • BIN eredmény: 1111 1011.
    • Magyarázat: $256 - 5 = 251$ (ami FB).
  2. Állítsa a szélességet 16-bitre.

    • Adja meg DEC-ben: -5.
    • HEX eredmény: FFFB.
    • Magyarázat: Mivel több helyünk van, az “egyesek” kitöltik a bal oldali maradék teret.
  3. Állítsa a szélességet Csak pozitív (Unsigned) értékre.

    • Ha beírja a -5-öt, a mező pirosra vált. Ez a mód nem támogatja a negatív számokat, mert végtelen sok egyesre lenne szükség.

Profi tipp: Ha színekkel vagy IP-címekkel dolgozik, mindig használja a “Csak pozitív” módot. Ha C/C++ vagy assembly feladatokat végez, váltson 32-bitesre vagy 64-bitesre.


Gyors átváltási táblázat (Cheat Sheet)

A gyors tájékozódás érdekében itt felsoroljuk az alapvető értékeket, amelyeket minden “informatikusnak” fejből kellene tudnia.

Decimális (DEC)Hexadecimális (HEX)Bináris (BIN)Megjegyzés
0000000Nulla
1010001
100A1010
150F11114 bit (nibble) maximális értéke
16100001 0000
1277F0111 1111Max érték előjeles 8-bithez (char)
255FF1111 1111Max érték előjel nélküli 8-bithez (bájt)
65 535FFFFMax érték 16-bithez

Gyakran Ismételt Kérdések (GYIK)

Mit jelent a "Bit Depth" (Bitmélység)? Meghatározza, mennyi memória van fenntartva egy számnak.
  • 8-bit: Értékek 0-tól 255-ig (vagy -128-tól 127-ig). Megfelel a char vagy byte típusnak.
  • 16-bit: Értékek 65 535-ig. Megfelel a short típusnak.
  • 32-bit: Szabványos int a modern nyelvekben.
  • 64-bit: Nagyon nagy számokhoz (long long, BigInt).
Miért írják a 255-ös számot HEX-ben FF-ként? A hexadecimális számrendszer 16 számjegyet (0-9 és A-F) tartalmaz, ahol az F értéke 15. Az FF számítása a következő: $(15 \times 16^1) + (15 \times 16^0) = 240 + 15 = 255$.
Hogyan alakítok át HEX színt RGB-re? A webes szín, pl. #E05412, három bájtól áll: Piros (E0), Zöld (54), Kék (12). Adja meg a konverterünkbe az "E0"-t a HEX mezőbe -> 224-et kap. Adja meg az "54"-et -> 84-et kap. Adja meg a "12"-t -> 18-at kap. Az eredmény rgb(224, 84, 18).
Mit jelent a 0x, 0b vagy 0o prefix? A programozók a számrendszerek megkülönböztetésére prefixeket használnak:
  • 0x = Hexadecimális (pl. 0xFF)
  • 0b = Bináris (pl. 0b101)
  • 0o = Oktális (pl. 0o755)
Konverterünk felismeri ezeket a jelöléseket, de nem kötelező beírni őket.
Miért vált pirosra a mező? Ez egy bemeneti validációs funkció. Azt jelenti, hogy olyan karaktert adott meg, amely nem tartozik az adott számrendszerhez. Például:
  • "G" betű HEX-be (csak A-F engedélyezett).
  • "2" számjegy BIN-be (csak 0 és 1 engedélyezett).
  • "8" számjegy OCT-be (csak 0-7 engedélyezett).
Javítsa ki a gépelési hibát, és a számítás folytatódik.