Skaitļu sistēmu konvertors ar negatīvo skaitļu atbalstu

Datoru pasaule darbojas ar nullēm un vieniniekiem, bet cilvēki domā desmitos. Un programmētāji? Viņiem jāsaprot viss pa vidu. Neatkarīgi no tā, vai atkļūdojat zema līmeņa kodu, iestatāt krāsas CSS, aprēķināt IP maskas vai risināt datorzinātņu uzdevumus, jūs saskaraties ar nepieciešamību konvertēt skaitļus starp dažādām sistēmām.

Parastie kalkulatori Windows vai mobilajos tālruņos bieži ir lēni un neveikli. Mūsu inteliģentais skaitļu sistēmu konvertors tika izstrādāts programmētājiem. Tas piedāvā tūlītēju konvertēšanu reāllaikā, atbalstu ārkārtīgi lieliem skaitļiem un, kā viens no nedaudzajiem tiešsaistes rīkiem, pareizi apstrādā negatīvos skaitļus binārā formā.

Ko spēj šis skaitļu sistēmu konvertors?

Izstrādājot šo logrīku, mēs koncentrējāmies uz biežāko programmētāju problēmu risināšanu:

  1. Reaktivitāte reāllaikā: Nav pogas “Aprēķināt”. Sāciet rakstīt HEX laukā un nekavējoties redzēsiet, kā mainās BIN un DEC.
  2. Negatīvo skaitļu atbalsts (Signed Integers): Lielākā daļa tiešsaistes konvertoru neizdodas, ja ievadāt -5. Mēs ne. Pateicoties bitu platuma (8, 16, 32, 64 bitu) izvēlei, mēs simulējam precīzu procesora uzvedību, izmantojot tā saukto divnieku papildinājumu.
  3. Binārā koda lasāmība: Skatīties uz 1110101011011110 ir nogurdinoši acīm. Mūsu rīks var automātiski formatēt izvadi ik pēc 4 bitiem (nibliem) uz 1110 1010 1101 1110, kas radikāli samazina kļūdu skaitu pārrakstot.
  4. BigInt atbalsts: Nepieciešams konvertēt 64 bitu skaitli vai jaucējkodu? Standarta JavaScript apstājas pie skaitļa $2^{53}$. Mūsu dzinējs var apstrādāt jebkura garuma skaitļus “Unsigned” režīmā.

Ceļvedis skaitļu sistēmās: kad kuru izmantot?

1. Decimālā sistēma (DEC - Decimal)

  • Bāze: 10 (cipari 0-9)
  • Lietojums: Ikdiena, finanses, ciklu skaitīšana kodā.
  • Interesants fakts: Datori to nesaprot, tiem tas jāpārvērš binārā formā.

2. Binārā sistēma (BIN - Binary)

  • Bāze: 2 (cipari 0, 1)
  • Lietojums: Mašīnkods, loģiskās vārti, IP adrešu maskēšana.
  • Padoms: Katrs cipars apzīmē vienu bitu. 8 biti veido 1 baitu (Byte).

3. Heksadecimālā sistēma (HEX - Hexadecimal)

  • Bāze: 16 (cipari 0-9, burti A-F)
  • Lietojums: Kompakts binārā koda pieraksts. Viens HEX simbols precīzi apzīmē 4 bitus (nibble). Divi simboli (piemēram, FF) apzīmē veselu baitu.
  • Piemēri:
    • Krāsas tīmeklī: #FF5733 (sarkans, zaļš, zils).
    • MAC adreses: 00:1A:2B:3C:4D:5E.
    • Atmiņas izvades (Memory dumps).

4. Oktālā sistēma (OCT - Octal)

  • Bāze: 8 (cipari 0-7)
  • Lietojums: Vēsturiski vecāki datori, mūsdienās jo īpaši Linux atļaujas (chmod).
  • Piemērs: Komanda chmod 755 iestata tiesības rwx-rx-rx (lasīšana, rakstīšana, izpildīšana).

Kā pareizi strādāt ar negatīviem skaitļiem?

Šī ir mūsu konvertora visattīstītākā funkcija. Datora atmiņā nav “mīnusa” zīmes. Lai dators saglabātu negatīvu skaitli, tas visbiežāk izmanto divnieku papildinājuma (Two’s Complement) metodi.

Negatīva skaitļa konvertēšanas rezultāts ir atkarīgs no tā, cik bitu ir atvēlēti mainīgajam. Tāpēc augšējā joslā atradīsiet pārslēdzēju Bitu dziļums.

Piemērs: Kā izskatās skaitlis -5?

Izmēģiniet to paši mūsu konvertorā:

  1. Iestatiet dziļumu uz 8-bit.

    • Ievadiet DEC: -5.
    • HEX rezultāts: FB.
    • BIN rezultāts: 1111 1011.
    • Paskaidrojums: $256 - 5 = 251$ (kas ir FB).
  2. Iestatiet dziļumu uz 16-bit.

    • Ievadiet DEC: -5.
    • HEX rezultāts: FFFB.
    • Paskaidrojums: Tā kā mums ir vairāk vietas, “vieninieki” aizpilda atlikušo vietu pa kreisi.
  3. Iestatiet dziļumu uz Tikai pozitīvi (Unsigned).

    • Ja ievadīsiet -5, lauks kļūs sarkans. Šis režīms neatbalsta negatīvus skaitļus, jo tas prasītu bezgalīgi daudz vieninieku.

Profi padoms: Ja strādājat ar krāsām vai IP adresēm, vienmēr izmantojiet režīmu “Tikai pozitīvi”. Ja veicat uzdevumus C/C++ vai asamblerā, pārslēdzieties uz 32-bit vai 64-bit.


Ātro konvertēšanas tabula (Cheat Sheet)

Ātrai orientācijai šeit ir norādītas pamatvērtības, kuras katram “IT speciālistam” vajadzētu zināt no galvas.

Desmitdaļas (DEC)Heksadecimāli (HEX)Bināri (BIN)Piezīme
0000000Nulle
1010001
100A1010
150F1111Maksimālā 4 bitu vērtība (Nibble)
16100001 0000
1277F0111 1111Maks. vērtība signed 8-bit (char)
255FF1111 1111Maks. vērtība unsigned 8-bit (baits)
65 535FFFFMaks. vērtība 16-bit

Bieži uzdotie jautājumi (BUJ)

Ko nozīmē "Bit Depth" (Bitu dziļums)? Nosaka, cik daudz atmiņas ir atvēlēts skaitlim.
  • **8-bit:** Vērtības no 0 līdz 255 (vai no -128 līdz 127). Atbilst tipam char vai byte.
  • **16-bit:** Vērtības līdz 65 535. Atbilst tipam short.
  • **32-bit:** Standarta int mūsdienu valodās.
  • **64-bit:** Ļoti lieliem skaitļiem (long long, BigInt).
Kāpēc skaitlis 255 HEX formātā tiek pierakstīts kā FF? Heksadecimālajā sistēmā ir 16 cipari (0-9 un A-F), kur F vērtība ir 15. Skaitlis FF tiek aprēķināts šādi: $(15 \times 16^1) + (15 \times 16^0) = 240 + 15 = 255$.
Kā HEX krāsu pārvērst par RGB? Krāsa tīmeklī, piemēram, #E05412, sastāv no trim baitiem: sarkans (E0), zaļš (54), zils (12). Ievadiet mūsu konvertorā "E0" HEX laukā -> iegūsiet 224. Ievadiet "54" -> iegūsiet 84. Ievadiet "12" -> iegūsiet 18. Rezultāts ir rgb(224, 84, 18).
Ko nozīmē prefikss 0x, 0b vai 0o? Lai programmētāji atšķirtu sistēmas, tiek izmantoti prefiksi:
  • 0x = Heksadecimāls (piemēram, 0xFF)
  • 0b = Binārs (piemēram, 0b101)
  • 0o = Oktāls (piemēram, 0o755)
Mūsu konvertors atpazīst šos apzīmējumus, bet tos nav obligāti rakstīt.
Kāpēc mans lauks kļuva sarkans? Tā ir ievades validācijas funkcija. Tas nozīmē, ka esat ievadījis simbolu, kas nepieder attiecīgajai sistēmai. Piemēram:
  • Burts "G" HEX formātā (atļauts ir tikai A-F).
  • Cipars "2" BIN formātā (atļauts ir tikai 0 un 1).
  • Cipars "8" OCT formātā (atļauts ir tikai 0-7).
Izlabojiet kļūdu un aprēķins turpināsies.