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:
- Reaalajas reageerimisvõime: Puudub nupp “Arvuta”. Hakake kirjutama HEX-välja ja näete koheselt, kuidas BIN ja DEC muutuvad.
- 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. - Kahendkoodi loetavus: Vaadata
1110101011011110on silmadele raske. Meie tööriist saab väljundi automaatselt vormindada 4-bitiste (nibble) kaupa1110 1010 1101 1110, mis vähendab oluliselt vigade hulka kopeerimisel. - 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).
- Värvid veebis:
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 755mää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:
-
Määrake laiuseks 8-bit.
- Sisestage DEC-i:
-5. - Tulemus HEX:
FB. - Tulemus BIN:
1111 1011. - Selgitus: $256 - 5 = 251$ (mis on FB).
- Sisestage DEC-i:
-
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.
- Sisestage DEC-i:
-
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.
- Kui sisestate
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 |
|---|---|---|---|
| 0 | 00 | 0000 | Null |
| 1 | 01 | 0001 | |
| 10 | 0A | 1010 | |
| 15 | 0F | 1111 | 4 biti (Nibble) maksimaalne väärtus |
| 16 | 10 | 0001 0000 | |
| 127 | 7F | 0111 1111 | Maksimaalne väärtus signeeritud 8-bitile (char) |
| 255 | FF | 1111 1111 | Maksimaalne väärtus signeerimata 8-bitile (bait) |
| 65 535 | FFFF | … | Maksimaalne 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
charvõibyte. - 16-bit: Väärtused kuni 65 535. Vastab tüübile
short. - 32-bit: Standardne
intkaasaegsetes 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. NumberFF 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)
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).