Arvusüsteemide teisendaja: BIN, HEX, DEC, OCT | Negatiivsed arvud

Arvutimaailm töötab nullide ja ühtedega, kuid inimesed mõtlevad kümnendsüsteemis. Ja programmeerijad? Nemad peavad mõistma kõike selle vahel. Olenemata sellest, kas silute madalatasemelist koodi, seadistate CSS-is värve, arvutate IP-maske või lahendate infotehnoloogia ülesandeid, puutute kokku vajadusega teisendada arve süsteemide vahel.

Tavalised kalkulaatorid Windowsis või mobiilis on sageli aeglased ja kohmakad. Meie intelligentne arvusüsteemide teisendaja on loodud arendajate poolt arendajatele. See pakub kohest reaalajas konversiooni, toetust ülimahukatele arvudele ja on üks vähestest veebipõhistest tööriistadest, mis saab õigesti hakkama negatiivsete arvudega kahendkujul.

Mida see arvusüsteemide teisendaja suudab?

Selle vidina arendamisel keskendusime programmeerijate sagedasimate valupunktide lahendamisele:

  1. Reaalajas reageerimisvõime: Puudub nupp “Arvuta”. Hakake kirjutama HEX-välja ja näete koheselt, kuidas BIN ja DEC muutuvad.
  2. Negatiivsete arvude tugi (Signed Integers): Enamik veebipõhiseid teisendajaid ebaõnnestuvad, kui sisestate -5. Meie oma mitte. Tänu biti laiuse valikule (8, 16, 32, 64 bitti) simuleerime protsessori täpset käitumist nn kahendkoodi täiendi abil.
  3. Kahendkoodi loetavus: Vaadata 1110101011011110 on silmadele raske. Meie tööriist saab väljundi automaatselt vormindada 4-bitiste (nibble) kaupa 1110 1010 1101 1110, mis vähendab oluliselt vigade hulka kopeerimisel.
  4. BigInt tugi: Kas peate teisendama 64-bitise arvu või räsi? Standardne JavaScript peatub $2^{53}$ juures. Meie mootor saab hakkama suvaliselt pikkade arvudega “Unsigned” režiimis.

Arvusüsteemide juhend: Millal millist kasutada?

1. Kümnendsüsteem (DEC - Decimal)

  • Baas: 10 (numbrid 0-9)
  • Kasutamine: Igapäevaelu, rahandus, koodis tsüklite lugemine.
  • Huvitav fakt: Arvutid seda ei mõista, nad peavad selle kahendkoodi teisendama.

2. Kahendsüsteem (BIN - Binary)

  • Baas: 2 (numbrid 0, 1)
  • Kasutamine: Masinkood, loogikaväravad, IP-aadresside maskeerimine.
  • Nõuanne: Iga number tähistab ühte bitti. 8 bitti moodustavad 1 baidi (Byte).

3. Kuueteistkümnendsüsteem (HEX - Hexadecimal)

  • Baas: 16 (numbrid 0-9, tähed A-F)
  • Kasutamine: Kahendkoodi kompaktne esitus. Üks HEX-märk tähistab täpselt 4 bitti (nibble). Kaks märki (nt FF) tähistavad tervet baiti.
  • Näited:
    • Värvid veebis: #FF5733 (Punane, Roheline, Sinine).
    • MAC-aadressid: 00:1A:2B:3C:4D:5E.
    • Mälukäsurid (Memory dumps).

4. Kaheksandsüsteem (OCT - Octal)

  • Baas: 8 (numbrid 0-7)
  • Kasutamine: Ajalooliselt vanemad arvutid, tänapäeval peamiselt Linuxi õigused (chmod).
  • Näide: Käsk chmod 755 määrab õigused rwx-rx-rx (lugemine, kirjutamine, käivitamine).

Kuidas negatiivsete arvudega õigesti töötada?

See on meie teisendaja kõige arenenum funktsioon. Arvutimälus puudub “miinus” märk. Et arvuti saaks negatiivset arvu salvestada, kasutab ta kõige sagedamini kahendkoodi täiendi (Two’s Complement) meetodit.

Negatiivse arvu teisendamise tulemus sõltub aga sellest, kui palju bitte on muutujale eraldatud. Seetõttu leiate ülemisel ribal lüliti Biti laius.

Näide: Kuidas näeb välja number -5?

Proovige seda ise meie teisendajas:

  1. Määrake laiuseks 8-bit.

    • Sisestage DEC-i: -5.
    • Tulemus HEX: FB.
    • Tulemus BIN: 1111 1011.
    • Selgitus: $256 - 5 = 251$ (mis on FB).
  2. Määrake laiuseks 16-bit.

    • Sisestage DEC-i: -5.
    • Tulemus HEX: FFFB.
    • Selgitus: Kuna meil on rohkem ruumi, täidavad “üksed” ülejäänud ruumi vasakul.
  3. Määrake laiuseks Ainult positiivsed (Unsigned).

    • Kui sisestate -5, muutub väli punaseks. See režiim ei toeta negatiivseid arve, sest see nõuaks lõpmatult palju ühtesid.

Proffide näpunäide: Kui töötate värvide või IP-aadressidega, kasutage alati režiimi “Ainult positiivsed”. Kui teete ülesandeid C/C++ või Assembleri jaoks, lülitage 32-bit või 64-bit režiimile.


Kiirteisenduste tabel (Spikker)

Kiireks orienteerumiseks toome siin välja põhiväärtused, mida iga “IT-inimene” peaks peast teadma.

Kümnendsüsteem (DEC)Kuueteistkümnendsüsteem (HEX)Kahendsüsteem (BIN)Märkus
0000000Null
1010001
100A1010
150F11114 biti (Nibble) maksimaalne väärtus
16100001 0000
1277F0111 1111Maksimaalne väärtus signeeritud 8-bitile (char)
255FF1111 1111Maksimaalne väärtus signeerimata 8-bitile (bait)
65 535FFFFMaksimaalne väärtus 16-bitile

Korduma kippuvad küsimused (KKK)

Mida tähendab "Bit Depth" (Biti laius)? See määrab, kui palju mälu on arvule eraldatud.
  • 8-bit: Väärtused 0 kuni 255 (või -128 kuni 127). Vastab tüübile char või byte.
  • 16-bit: Väärtused kuni 65 535. Vastab tüübile short.
  • 32-bit: Standardne int kaasaegsetes keeltes.
  • 64-bit: Väga suurte arvude jaoks (long long, BigInt).
Miks kirjutatakse number 255 HEX-is FF-ina? Kuueteistkümnendsüsteemil on 16 numbrit (0-9 ja A-F), kus F-i väärtus on 15. Number FF arvutatakse järgmiselt: $(15 \times 16^1) + (15 \times 16^0) = 240 + 15 = 255$.
Kuidas teisendan HEX-värvi RGB-ks? Värv veebis, nt #E05412, koosneb kolmest baidist: Punane (E0), Roheline (54), Sinine (12). Sisestage meie teisendajasse "E0" HEX-välja -> saate 224. Sisestage "54" -> saate 84. Sisestage "12" -> saate 18. Tulemus on rgb(224, 84, 18).
Mida tähendab eesliide 0x, 0b või 0o? Et programmeerijad saaksid süsteeme eristada, kasutatakse eesliiteid:
  • 0x = Kuueteistkümnendsüsteem (nt 0xFF)
  • 0b = Kahendsüsteem (nt 0b101)
  • 0o = Kaheksandsüsteem (nt 0o755)
Meie teisendaja tunneb need tähistused ära, kuid neid pole vaja kirjutada.
Miks mu väli punaseks muutus? See on sisendi valideerimise funktsioon. See tähendab, et sisestasite märgi, mis ei kuulu antud süsteemi. Näiteks:
  • Täht "G" HEX-i (lubatud on ainult A-F).
  • Number "2" BIN-i (lubatud on ainult 0 ja 1).
  • Number "8" OCT-i (lubatud on ainult 0-7).
Parandage trükiviga ja arvutus jätkub.