Преобразуване на числови системи с поддръжка на отрицателни числа

Светът на компютрите работи с нули и единици, но хората мислят с десетици. А програмистите? Те трябва да разбират всичко между тях. Независимо дали отстранявате грешки в ниско ниво код, настройвате цветове в CSS, изчислявате IP маски или решавате задачи по компютърни науки, вие се сблъсквате с необходимостта да конвертирате числа между системи.

Обикновените калкулатори в Windows или на мобилни устройства често са бавни и тромави. Нашият интелигентен конвертор на числови системи е проектиран от разработчици за разработчици. Той предлага незабавна конверсия в реално време, поддръжка за изключително големи числа и, като един от малкото онлайн инструменти, правилно обработва отрицателни числа в двоичен вид.

Какво може да прави този конвертор на числови системи?

При разработването на този уиджет се съсредоточихме върху решаването на най-честите проблеми на програмистите:

  1. Реактивност в реално време: Без бутон “Изчисли”. Започнете да пишете в полето HEX и веднага ще видите как се променят BIN и DEC.
  2. Поддръжка на отрицателни числа (Signed Integers): Повечето онлайн конвертори се провалят, когато въведете -5. Ние не. Благодарение на избора на битова ширина (8, 16, 32, 64 бита) ние симулираме точното поведение на процесора, използвайки така наречения двоичен допълнителен код (Two’s Complement).
  3. Четимост на двоичния код: Гледането на 1110101011011110 е натоварващо. Нашият инструмент може автоматично да форматира изхода на всеки 4 бита (нибъли) до 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 бита (нибъл). Два знака (напр. 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?

Опитайте сами в нашия конвертор:

  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 бита (нибъл)
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).
Коригирайте грешката и изчислението ще продължи.