Преобразуване на числови системи с поддръжка на отрицателни числа
Светът на компютрите работи с нули и единици, но хората мислят с десетици. А програмистите? Те трябва да разбират всичко между тях. Независимо дали отстранявате грешки в ниско ниво код, настройвате цветове в CSS, изчислявате IP маски или решавате задачи по компютърни науки, вие се сблъсквате с необходимостта да конвертирате числа между системи.
Обикновените калкулатори в Windows или на мобилни устройства често са бавни и тромави. Нашият интелигентен конвертор на числови системи е проектиран от разработчици за разработчици. Той предлага незабавна конверсия в реално време, поддръжка за изключително големи числа и, като един от малкото онлайн инструменти, правилно обработва отрицателни числа в двоичен вид.
Какво може да прави този конвертор на числови системи?
При разработването на този уиджет се съсредоточихме върху решаването на най-честите проблеми на програмистите:
- Реактивност в реално време: Без бутон “Изчисли”. Започнете да пишете в полето HEX и веднага ще видите как се променят BIN и DEC.
- Поддръжка на отрицателни числа (Signed Integers): Повечето онлайн конвертори се провалят, когато въведете
-5. Ние не. Благодарение на избора на битова ширина (8, 16, 32, 64 бита) ние симулираме точното поведение на процесора, използвайки така наречения двоичен допълнителен код (Two’s Complement). - Четимост на двоичния код: Гледането на
1110101011011110е натоварващо. Нашият инструмент може автоматично да форматира изхода на всеки 4 бита (нибъли) до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 бита (нибъл). Два знака (напр.
FF) представляват цял байт. - Примери:
- Цветове в уеб:
#FF5733(Red, Green, Blue). - 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 бита (нибъл) |
| 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).