Претворање на бројни системи со поддршка за негативни броеви
Светот на компјутерите работи на нули и единици, но луѓето размислуваат во децимали. А програмерите? Тие мора да разбираат сè помеѓу. Без разлика дали дебагирате ниско ниво на код, поставувате бои во CSS, пресметувате IP маски или решавате задачи од информатика, наидувате на потребата за претворање на броеви помеѓу бројни системи.
Вообичаените калкулатори во Windows или на мобилен се често бавни и несмасни. Нашиот интелигентен претворувач на бројни системи е дизајниран од програмери за програмери. Тој нуди моментална конверзија во реално време, поддршка за екстремно големи броеви и, како една од ретките онлајн алатки, правилно ракува со негативни броеви во бинарен облик.
Што може да направи овој претворувач на бројни системи?
При развојот на овој виџет, се фокусиравме на решавање на најчестите проблеми на програмерите:
- Реактивност во реално време: Нема копче “Пресметај”. Почнете да пишувате во полето HEX и веднаш гледате како се менуваат BIN и DEC.
- Поддршка за негативни броеви (Signed Integers): Повеќето онлајн претворувачи не успеваат кога ќе напишете
-5. Ние не. Благодарение на изборот на битна длабочина (8, 16, 32, 64 бита), ја симулираме прецизната работа на процесорот користејќи го т.н. двоен комплемент. - Читливост на бинарен код: Гледањето на
1110101011011110е напорно за очите. Нашата алатка може автоматски да го форматира излезот по 4 бита (nibbles) на1110 1010 1101 1110, што радикално ја намалува грешката при препишување. - Поддршка за 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?
Обидете се сами во нашиот претворувач:
-
Поставете ја длабочината на 8-бита.
- Внесете во DEC:
-5. - Резултат HEX:
FB. - Резултат BIN:
1111 1011. - Објаснување: $256 - 5 = 251$ (што е FB).
- Внесете во DEC:
-
Поставете ја длабочината на 16-бита.
- Внесете во DEC:
-5. - Резултат HEX:
FFFB. - Објаснување: Бидејќи имаме повеќе простор, “единиците” го пополнуваат остатокот од просторот лево.
- Внесете во DEC:
-
Поставете ја длабочината на Само позитивни (Unsigned).
- Ако внесете
-5, полето ќе поцрвени. Овој режим не поддржува негативни броеви, бидејќи би барал бесконечно многу единици.
- Ако внесете
Професионален совет: Ако работите со бои или IP адреси, секогаш користете го режимот “Само позитивни”. Ако работите задачи за C/C++ или асемблер, префрлете се на 32-бита или 64-бита.
Табела за брзи претворања (Cheat Sheet)
За брза ориентација, овде ги наведуваме основните вредности што секој “ИТ-специјалист” треба да ги знае напамет.
| Децимално (DEC) | Хексадецимално (HEX) | Бинарно (BIN) | Забелешка |
|---|---|---|---|
| 0 | 00 | 0000 | Нула |
| 1 | 01 | 0001 | |
| 10 | 0A | 1010 | |
| 15 | 0F | 1111 | Максимална вредност на 4 бита (Nibble) |
| 16 | 10 | 0001 0000 | |
| 127 | 7F | 0111 1111 | Макс вредност за потпишан 8-бит (char) |
| 255 | FF | 1111 1111 | Макс вредност за непотпишан 8-бит (бајт) |
| 65 535 | FFFF | … | Макс вредност за 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).