Какво е позиционна бройна система
В десетичното число 4095 цифрата 4 не струва 4: струва 4000, защото стои на мястото на хилядите. Всяка позиция умножава цифрата по степен на 10 (1, 10, 100, 1000…). Това е позиционната система, а основата е броят на различните цифри, които се ползват: десет в десетичната.
Двоичната работи по същия начин, но с основа 2: съществуват само 0 и 1, а всяко място струва двойно повече от предишното. Шестнадесетичната е с основа 16: шестнайсетте цифри са от 0 до 9 и буквите от A до F, а всяко място струва 16 пъти повече от предишното. Компютрите работят в двоична система, защото една схема трябва да различава само две състояния (изключено и включено), а шестнадесетичната е кратък начин да се запишат тези битове.
| Позиция (отдясно наляво) | Стойност в двоична | Стойност в шестнадесетична |
|---|---|---|
| 1-ва | 1 | 1 |
| 2-ра | 2 | 16 |
| 3-та | 4 | 256 |
| 4-та | 8 | 4096 |
| 5-та | 16 | 65536 |
| 6-та | 32 | 1048576 |
| 7-ма | 64 | 16777216 |
| 8-ма | 128 | 268435456 |
От двоично в десетично, на ръка
Записва се всяка цифра със стойността на мястото ѝ и се събират само местата, където има 1. Пример с 1101: отдясно наляво местата струват 1, 2, 4 и 8.
- Запишете числото и под него стойността на всяка позиция: 1 1 0 1 над 8 4 2 1.
- Погледнете какво има на всяко място: 1 на мястото на 8, 1 на мястото на 4, 0 на мястото на 2 и 1 на мястото на 1.
- Пренебрегнете местата с 0 (тук това на 2).
- Съберете: 8 + 4 + 0 + 1 = 13. Значи 1101 в двоична система е 13 в десетична.
С повече цифри е същото: 11111111 е 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255, най-голямата стойност, която се събира в 8 бита. А 10110110 е 128 + 32 + 16 + 4 + 2 = 182.
От десетично в двоично, с последователни деления
Числото се дели на 2 отново и отново, като се записва остатъкът от всяко деление (винаги 0 или 1), докато частното стане 0. Остатъците, прочетени отдолу нагоре, са двоичното число. Пример с 45:
- 45 ÷ 2 = 22, остатък 1
- 22 ÷ 2 = 11, остатък 0
- 11 ÷ 2 = 5, остатък 1
- 5 ÷ 2 = 2, остатък 1
- 2 ÷ 2 = 1, остатък 0
- 1 ÷ 2 = 0, остатък 1
Като прочетете остатъците отдолу нагоре, получавате 101101. За проверка съберете: 32 + 8 + 4 + 1 = 45.
Има и алтернативен метод, който мнозина предпочитат: изваждане на степени на 2 от най-голямата към най-малката. За 200: влиза 128 (остават 72), влиза 64 (остават 8), не влизат 32 и 16, но влиза 8 (остава 0). Използваните места са 128, 64 и 8, така че 200 = 11001000.
Шестнадесетична система: шестнайсет цифри и таблица под ръка
Тъй като няма цифри за 10 до 15, се ползват буквите A, B, C, D, E и F. Една шестнадесетична цифра съответства точно на четири бита (един «нибъл»), и затова е толкова удобна: един байт, който е 8 бита, се записва само с две шестнадесетични цифри.
За да преминете от шестнадесетично в десетично, умножете всяка цифра по степента на 16 на нейното място и съберете. Например 3F = 3 × 16 + 15 = 63 и A3 = 10 × 16 + 3 = 163.
| Десетично | Двоично (4 бита) | Осмично | Шестнадесетично |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
Защо се ползва шестнадесетичната: байтове, цветове и адреси
Един байт са 8 бита и е от 0 до 255 (00000000 до 11111111). Писането на битове на ръка е бавно и води до грешки; в шестнадесетична система същият байт са два знака, от 00 до FF. За да преминете от двоично в шестнадесетично, разделете битовете на групи по четири отдясно и заменете всяка група с нейната цифра от таблицата. Пример: 11010111 се разделя на 1101 и 0111, които са D и 7, така че е D7. В десетична система това е 13 × 16 + 7 = 215.
Най-известният случай са уеб цветовете. В #FF8800 има три байта: FF за червеното (255), 88 за зеленото (136) и 00 за синьото (0). Това е наситен оранжев: цялото червено, малко над половината от зеленото и никакво синьо. Шестнадесетичната система се среща и в адреси на паметта, кодове за грешки и мрежови идентификатори.
От текст в двоичен код с ASCII
Компютърът пази всяка буква като число, а числото като битове. В таблицата ASCII буквата A е 65, което в 8-битов двоичен запис е 01000001. Думата «Hi» са две букви: H е 72 (01001000), а i е 105 (01101001), така че се записва 01001000 01101001. С «Hola» са 72, 111, 108 и 97, тоест 01001000 01101111 01101100 01100001, а в шестнадесетичен вид 48 6F 6C 61.
Инструментът ползва кодирането UTF-8: за основните латински букви всеки знак заема един байт от 8 бита, но буква с диакритичен знак или емоджи заемат по няколко байта и затова дават повече от 8 бита. Например буквата ñ са два байта: 11000011 10110001 (C3 B1 в шестнадесетичен вид).
Как да направите всичко това с инструмента
Конверторът «Двоично, десетично и шестнадесетично» служи да проверите сметките си на ръка или да решавате дълги числа без грешки.
- Напишете числото в полето на неговата основа: «Десетична (основа 10)», «Двоична (основа 2)», осмична или «Шестнадесетична (основа 16)». Останалите три се попълват сами.
- Ако някоя цифра не е валидна за основата (например 2 в двоична), инструментът ви предупреждава.
- За текст го напишете в полето «Текст» и вижте «Двоично (8 бита на символ)» и шестнадесетичния вид по байтове. Можете да поставите и битове на групи по 8, за да се върнете към текста.
- За необичайни основи ползвайте «Произволна основа (от 2 до 36)»: избирате основата на източника, основата на резултата и числото.
Ограниченията: преобразува само неотрицателни цели числа (без десетични знаци и без знак) и не добавя нули отляво вместо вас, така че ако искате фиксирани 8 бита, трябва да допълните на ръка (13 е 00001101). Нищо от написаното не напуска вашия браузър.
Чести грешки
- Четене на остатъците наобратно: при последователните деления първият остатък е най-дясната цифра, а не най-лявата.
- Забравяне на нулите отляво, когато са нужни: 13 е 1101, но като байт е 00001101. Има значение, когато дължината е част от данните, както при цвят или мрежова маска.
- Бъркане на буквата O с нулата или на шестнадесетичното B (11) с 8 при копиране. В шестнадесетичната система буквите струват едно и също с главна и малка буква, но не са същото като цифра.
- Оставяне на префикса 0x или на знака # при преобразуване: те са само знак, че числото е шестнадесетично, и трябва да се махнат, преди да поставите числото.
- Да мислите, че 10 в двоична система е десет: то е две. Едно и също «10» струва 2, 10 или 16 според основата.
Решени упражнения за практика
Опитайте се да решите всяко, преди да погледнете отговора, и после проверете с инструмента.
- Преобразувайте 10110110 в десетично и в шестнадесетично. Отговор: 128 + 32 + 16 + 4 + 2 = 182; на групи по четири, 1011 0110 = B6.
- Преобразувайте 200 в двоично и в шестнадесетично. Отговор: 11001000 и C8 (12 × 16 + 8 = 200).
- Преобразувайте 7F в двоично. Отговор: 7 = 0111 и F = 1111, значи 01111111, което в десетична система е 127.
- Запишете «OK» в двоичен код. Отговор: O е 79 и K е 75, тоест 01001111 01001011.
Често задавани въпроси
Как да преобразувам 1101 от двоично в десетично?
Събирате стойностите на местата, където има 1: 8 + 4 + 1 = 13. Втората цифра отдясно е 0, така че 2 не се добавя.
Колко е 255 в двоична и в шестнадесетична система?
255 е 11111111 в двоична и FF в шестнадесетична система. Това е най-голямата стойност, която се събира в един байт от 8 бита.
Защо шестнадесетичната система ползва букви?
Защото ѝ трябват шестнайсет различни символа, а десетичната система дава само десет (от 0 до 9). Затова A е 10, B е 11, C е 12, D е 13, E е 14 и F е 15.
Колко различни числа могат да се запишат с 8 бита?
256, от 0 до 255. Като цяло с n бита могат да се представят 2 на степен n стойности.
Преобразува ли инструментът отрицателни числа или числа с десетични знаци?
Не, само неотрицателни цели числа. За текст ползва UTF-8, така че буквите с диакритични знаци и емоджитата дават повече от 8 бита.