Претворање на бројни системи со поддршка за негативни броеви

Светот на компјутерите работи на нули и единици, но луѓето размислуваат во децимали. А програмерите? Тие мора да разбираат сè помеѓу. Без разлика дали дебагирате ниско ниво на код, поставувате бои во CSS, пресметувате IP маски или решавате задачи од информатика, наидувате на потребата за претворање на броеви помеѓу бројни системи.

Вообичаените калкулатори во Windows или на мобилен се често бавни и несмасни. Нашиот интелигентен претворувач на бројни системи е дизајниран од програмери за програмери. Тој нуди моментална конверзија во реално време, поддршка за екстремно големи броеви и, како една од ретките онлајн алатки, правилно ракува со негативни броеви во бинарен облик.

Што може да направи овој претворувач на бројни системи?

При развојот на овој виџет, се фокусиравме на решавање на најчестите проблеми на програмерите:

  1. Реактивност во реално време: Нема копче “Пресметај”. Почнете да пишувате во полето HEX и веднаш гледате како се менуваат BIN и DEC.
  2. Поддршка за негативни броеви (Signed Integers): Повеќето онлајн претворувачи не успеваат кога ќе напишете -5. Ние не. Благодарение на изборот на битна длабочина (8, 16, 32, 64 бита), ја симулираме прецизната работа на процесорот користејќи го т.н. двоен комплемент.
  3. Читливост на бинарен код: Гледањето на 1110101011011110 е напорно за очите. Нашата алатка може автоматски да го форматира излезот по 4 бита (nibbles) на 1110 1010 1101 1110, што радикално ја намалува грешката при препишување.
  4. Поддршка за BigInt: Треба да претворите 64-битен број или хаш? Стандардниот JavaScript завршува со бројот $2^{53}$. Нашиот мотор може да обработува броеви со произволна должина во режимот “Unsigned”.

Водич за бројни системи: Кога да користите кој?

1. Децимален броен систем (DEC - Decimal)

  • Основа: 10 (цифри 0-9)
  • Употреба: Секојдневен живот, финансии, броење јамки во код.
  • Интересно: Компјутерите не го разбираат, мора да го претворат во бинарен.

2. Бинарен броен систем (BIN - Binary)

  • Основа: 2 (цифри 0, 1)
  • Употреба: Машински код, логички порти, маскирање на IP адреси.
  • Совет: Секоја цифра претставува еден бит. 8 бита формираат 1 бајт (Byte).

3. Хексадецимален броен систем (HEX - Hexadecimal)

  • Основа: 16 (цифри 0-9, букви A-F)
  • Употреба: Компактно запишување на бинарен код. Еден HEX знак претставува точно 4 бита (nibble). Два знака (на пр. FF) претставуваат цел бајт.
  • Примери:
    • Бои на веб: #FF5733 (Црвена, Зелена, Сина).
    • MAC адреси: 00:1A:2B:3C:4D:5E.
    • Испити на меморија (Memory dumps).

4. Октален броен систем (OCT - Octal)

  • Основа: 8 (цифри 0-7)
  • Употреба: Историски постари компјутери, денес особено Linux дозволи (chmod).
  • Пример: Командата chmod 755 ги поставува правата rwx-rx-rx (читање, запишување, извршување).

Како правилно да работите со негативни броеви?

Ова е најнапредната функција на нашиот претворувач. Во компјутерската меморија не постои знак “минус”. За да зачува негативен број, компјутерот најчесто ја користи методата на двоен комплемент (Two’s Complement).

Но, резултатот од претворањето на негативен број зависи од тоа колку бита има резервирано променливата. Затоа, во горната лента ќе најдете прекинувач за Битна длабочина.

Пример: Како изгледа бројот -5?

Обидете се сами во нашиот претворувач:

  1. Поставете ја длабочината на 8-бита.

    • Внесете во DEC: -5.
    • Резултат HEX: FB.
    • Резултат BIN: 1111 1011.
    • Објаснување: $256 - 5 = 251$ (што е FB).
  2. Поставете ја длабочината на 16-бита.

    • Внесете во DEC: -5.
    • Резултат HEX: FFFB.
    • Објаснување: Бидејќи имаме повеќе простор, “единиците” го пополнуваат остатокот од просторот лево.
  3. Поставете ја длабочината на Само позитивни (Unsigned).

    • Ако внесете -5, полето ќе поцрвени. Овој режим не поддржува негативни броеви, бидејќи би барал бесконечно многу единици.

Професионален совет: Ако работите со бои или IP адреси, секогаш користете го режимот “Само позитивни”. Ако работите задачи за C/C++ или асемблер, префрлете се на 32-бита или 64-бита.


Табела за брзи претворања (Cheat Sheet)

За брза ориентација, овде ги наведуваме основните вредности што секој “ИТ-специјалист” треба да ги знае напамет.

Децимално (DEC)Хексадецимално (HEX)Бинарно (BIN)Забелешка
0000000Нула
1010001
100A1010
150F1111Максимална вредност на 4 бита (Nibble)
16100001 0000
1277F0111 1111Макс вредност за потпишан 8-бит (char)
255FF1111 1111Макс вредност за непотпишан 8-бит (бајт)
65 535FFFFМакс вредност за 16-бит

Често поставувани прашања (FAQ)

Што значи "Bit Depth" (Битна длабочина)? Одредува колку меморија е резервирана за бројот.
  • **8-бита:** Вредности од 0 до 255 (или -128 до 127). Одговара на типот char или byte.
  • **16-бита:** Вредности до 65 535. Одговара на типот short.
  • **32-бита:** Стандарден int во модерните јазици.
  • **64-бита:** За многу големи броеви (long long, BigInt).
Зошто бројот 255 во HEX се запишува како FF? Хексадецималниот броен систем има 16 цифри (0-9 и A-F), каде F има вредност 15. Бројот FF се пресметува како: $(15 \times 16^1) + (15 \times 16^0) = 240 + 15 = 255$.
Како да претворам HEX боја во RGB? Бојата на веб, на пр. #E05412, се состои од три бајти: Црвена (E0), Зелена (54), Сина (12). Внесете во нашиот претворувач "E0" во полето HEX -> добивате 224. Внесете "54" -> добивате 84. Внесете "12" -> добивате 18. Резултатот е rgb(224, 84, 18).
Што значи префиксот 0x, 0b или 0o? За да ги разликуваат системите, програмерите користат префикси:
  • 0x = Хексадецимален (на пр. 0xFF)
  • 0b = Бинарен (на пр. 0b101)
  • 0o = Октален (на пр. 0o755)
Нашиот претворувач ги препознава овие ознаки, но не е неопходно да ги пишувате.
Зошто полето ми поцрвене? Тоа е функција за валидација на внесувањето. Тоа значи дека сте внеле знак кој не припаѓа на дадениот систем. На пример:
  • Буквата "G" во HEX (дозволено е само A-F).
  • Цифрата "2" во BIN (дозволено е само 0 и 1).
  • Цифрата "8" во OCT (дозволено е само 0-7).
Поправете ја грешката и пресметката ќе продолжи.