Познаем системы счисления используемые в ЭВМ
Содержание поста
Всего существует 4 популярных системы счисления, которые используются в современных компьютерах: десятичная, двоичная, восьмеричная и шестнадцатеричная. Разберемся с каждой из них.
Немного теории
Существует 2 типа систем счисления: позиционная и непозиционная.
Непозиционная система счисления — это когда набор цифр не связан с разрядностью (разделение на единицы, десятки, тысячи и т.д.).
Позиционная система счисления — это когда набор цифр, который, как вы, наверное, догадались, имеет разряды. 😉
Лучше всего это понять на примере.
Отличным примером непозиционной системы счисления является римская форма записи. Напомню: I — один, II — два, III — три, IV — четыре, V — пять, X — десять, L — пятьдесят, C — сто, D — пятьсот, M — тысяча.
Обозначим число 3032:
MMMXXXII, где 1000 + 1000 + 1000 + 10 + 10 + 10 + 1 + 1
Как видите, для обозначения каждого разряда, например тысяч, нам нужно повторять римскую M.
А теперь то же самое число в позиционной системе счисления:
3032, где
- первое число — это разряд тысяч, мы обозначили 3 раза по тысяче
- второе число — это сотни, мы обозначили 0 сотен
- третье число — это десятки, мы обозначили 3 десятка
- четвертое число — это единицы, мы обозначили 2 единицы.
Надеюсь, с этим все понятно. Теперь приступим к системам счисления.
Десятичная система счисления
Я добавил ее в этот пост только для полноты картины. Вы ей пользуетесь каждый день. Это обычные арабские цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Десятичная система является позиционной, но вы это и так знаете. Но могу добавить несколько интересных фактов, чтобы сделать раздел чуть полезнее:
- один десятичный разряд называется «децит» (decit), который сокращается от decimal digit;
- почему именно 10 чисел? Все просто — количество пальцев обычного человека (и токаря знакомого с техникой безопасности 🙃).
Двоичная система счисления
Компьютеры понимают только два числа: 0 и 1, что означает «нет сигнала (нет тока)» и «есть сигнал (есть ток)» — это называется двоичный (бинарный) код, а его минимальная единица измерения называется «бит». На этом коде работает процессор — «мозги» компьютера.
Когда вы запускаете свои программы или написанные кем-то другим — они переведутся в двоичный код понятный процессору. Причем на двоичном коде, как таковом, работают и многие другие системы, которые подчиняются булевой алгебре («ложь» или «правда», т.е. 0 или 1).
Например:
- магнитный сердечник может быть намагничен в одном направлении или в другом;
- ферромагнитная поверхность может быть намагничена или размагничена;
- электромагнитные реле может быть замкнуто или разомкнуто;
- транзисторный ключ может быть в проводящем или запертом состоянии.
Давайте разберемся с двоичной системой счисления, которую еще называют бинарной. Это позиционная (см. теорию выше) система счисления по основанию 2.
Вести счет с помощью двух цифр начали еще в Древнем Китае, поэтому данная система счисления не была создана специально для компьютерных систем, а скажем так, была адаптирована. Также, вспомните азбуку Морзе, которая состоит из двух символов: «точка» и «тире». Это не двоичная система счисления, но тоже следует принципам булевой алгебры.
Примеры двоичных чисел:
- 1100 — это 12 в десятичной системе счисления;
- 10111011100 — это 1 500 в десятичной системе счисления;
- 101001101 — это 333 в десятичной системе счисления.
Попробуем разобраться с преобразованием двоичной системы счисления в десятичную. Нам понадобится таблицы степеней чисел с основанием 2:
| 512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Здесь все просто, каждый последующий разряд (справа налево) умножается на 2.
Преобразуем число двоичное 10001111. Применим таблицу выше для этого числа:
| Степени | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
| Число | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
Преобразуем слева направо по формуле число * степень
- 1 * 128 = 128;
- 0 * 64 = 0;
- 0 * 32 = 0;
- 0 * 16 = 0;
- 1 * 8 = 8;
- 1 * 4 = 4;
- 1 * 2 = 2;
- 1 * 1 = 1.
Складываем: 128 + 0 + 0 + 0 + 8 + 4 + 2 + 1 = 143.
Ура! Это и есть наше число в десятичной системе счисления.
Существуют и другие способы преобразования двоичного числа в десятичное, если интересно, можете ознакомиться в Википедии.
Применение
В компьютерном мире используется на самом низком (в плане железа) уровне и как я писал выше: все действия, которые выполняются на компьютере, в конце концов будут преобразованы в двоичную систему счисления понятную процессору.
При веб-разработке, скорее всего, вам никогда не придется как-то взаимодействовать с двоичной системой счисления напрямую, но знать о ней обязан каждый уважающий себя программист.
Восьмеричная система счисления
Восьмеричная система счисления — это позиционная система счисления по основанию 8. Состоит из цифр 0, 1, 2, 3, 4, 5, 6, 7.
Примеры чисел в восьмеричной системе счисления:
- 741 — это 481 в десятичной системе счисления;
- 3717 — это 1999 в десятичной системе счисления;
- 10 — это 7 в десятичной системе счисления.
Как перевести число в восьмеричной системе счисления в десятичную? Числа от 0 до 7 — отображаются без преобразований. А для больших чисел, нужно воспользоваться формулой число * 8 в степени равной разряду. Разряды считаются справа налево. Для примера, переведем число 20454 в восьмеричной системе счисления в десятичную:
- 4 * 80 (первый разряд справа) = 4;
- 5 * 81 = 40;
- 4 * 82 = 256;
- 0 * 83 = 0;
- 2 * 84 = 8192;
Складываем: 0 + 40 + 256 + 0 + 8192 = 8492. Готово.
Применение
Наиболее часто восьмеричная система счисления используется в Linux-подобных операционных системах для выставления прав доступа к файлам и директориям (0644, 0755 и т.п.).
Шестнадцатеричная система счисления
Шестнадцатеричная система счисления — это позиционная система счисления по основанию 16. Состоит из цифр 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 и латинских букв обозначающих следующие по порядку числа: A — число 10, B — число 11, C — число 12, D — число 13, E — число 14, F — число 15.
А что здесь происходит? Цифры, итак, сложны, а к ним еще и буквы добавились? Давайте разбираться.
Примеры чисел в шестнадцатеричной системе счисления:
- 1С4 — это 452 в десятичной системе счисления;
- 2EE0 — это 12000 в десятичной системе счисления;
- 13 — это 19 в десятичной системе счисления.
Преобразуем число в шестнадцатеричной системе счисления в десятичную на примере числа 1E61. По аналогии с восьмеричной системой счисления, нужно воспользоваться формулой число * 16 в степени равной разряду (справа налево):
- 1 * 160 (первый разряд справа) = 1;
- 6 * 161 = 96;
- E (оно же 14) * 162 = 3584;
- 1 * 163 = 4096.
Складываем: 1 + 96 + 3584 + 4096 = 7777.
Переводить уже проще?
Использование
Шестнадцатеричная система счисления очень часто используется в низкоуровневом программировании из-за минимальной адресной единицы памяти, которым является 8-битый байт (один байт записывается двумя шестнадцатеричными числами, а полубайт — одним числом).
Также, в наборе символов Unicode номер символа записывается в шестнадцатеричной системе счисления.
Ну и конечно же, в шестнадцатеричной системе счисления записываются названия цветов образуемые из трех основных (красный — R (red), зеленый — G (green) и синий — B (blue), RGB). Например, FFFFFF — белый, а 000000 — черный.
