СИСТЕМЫ СЧИСЛЕНИЯ
— А все-таки, в какой системе счисления
лучше получать зарплату?
Из размышлений программиста Плюшкина
Человек, как известно, может распознавать тысячи (если не миллионы) видов всевозможных сигналов.
Когда мы читаем книгу, минимальным информационным элементом для нас становится буква, цифра или знак препинания. Итого — несколько десятков различных символов! При разговоре же мы должны распознавать уже сотни (если не тысячи) минимальных сигналов — звуки, элементы интонации, мимические и жестовые сигналы…
Нам, людям, это трудным не кажется. Но наш мозг учится искусству понимания этих сигналов долгие годы, методом проб и ошибок переводя внешние сигналы в понятные ему нервные импульсы, несущиеся по нейронным сетям. Эти импульсы и есть основной, изначальный язык мозга.
Ну а как обстоит дело в компьютере? Точно так же — вся поступающая извне информация переводится на самый простой для компьютера язык, язык машинных кодов в двоичной системе. Вот с этой «азбуки» информационной науки мы и начнем.
Впрочем, азбука ли это? Ведь букв-то как раз здесь и нет, одни цифры — не зря же компьютерные технологии нередко называют еще и «цифровыми». Да и цифр немного — всего две:
0 — отсутствие сигнала;
1 — его наличие.
Хорошая азбука, что и говорить! Такую даже первоклассник выучит за секунду… Да только мала — много ли слов составишь из ее «букв»?
Немного. Но для компьютера — вполне достаточно.
«Слова» эти, в отличие от человеческого языка, одинаковы по длине, в каждом из них — ровно восемь знаков. И выглядят эти «слова» вот так:
10101000 10001111 10000110
Каждое из этих громоздких двоичных чисел может обозначать число в привычной нам десятичной системе в диапазоне от 0 до 255. Именно столько сочетаний, по математическим законам, может дать нам восьмизначная группа, каждый знак которой может принимать одно из двух значений.
Как же перевести число из привычной нам десятичной системы в двоичную?
Проще всего — с помощью инженерного калькулятора. Если же такового под рукой не окажется, можно произвести это преобразование с помощью обычной бумаги и карандаша.
Нужное нам число делим на два несколько раз — вплоть до того момента, когда результат последнего деления не будет делиться на 2 с получением целых чисел.
Естественно, при каждом делении мы будем иметь дела с числами, которые либо делятся на 2 без остатка (т. е. имеют остаток 0), либо имеют остаток 1. Эти остатки, записанные по порядку появления в ряд справа налево, и дадут нам двоичное число.
Пример: необходимо перевести в двоичную систему число 50
50/2 |
= 25 | Остаток 0 |
25/2 | = 12 | Остаток 1 |
12/2 | = 6 | Остаток 0 |
6/2 | = 3 | Остаток 0 |
3/2 | = 1 | Остаток 1 |
У нас получилось двоичное число 10 010. Значит, восьмизначное двоичное число будет писаться так — 00 010 010.
Для обратной операции (перевода двоичных чисел в десятичные) существует другая формула. Значение каждого знака (0 или 1) следует умножить на 2, возведенное в степень n— 1, где n — номер этого знака в числе, считая справа. Получившиеся результаты необходимо сложить.
Пример:
01 010 101= 1+(0х21)+(1х22)+(0х23)+(1х24)+(0х25)+(1х26)+(0х27)= = 1 +0+4+0+16+0+64=85.
Кроме двоичной системы счисления, в компьютерной практике также используются восьмеричная и шестнадцатеричная системы. Они применяются очень редко, в основном при программировании в языках высокого уровня.
Шестнадцатеричная система использует, кроме цифр от нуля до 9, латинские буквы от А до F. А означает 10, В — 11, и так далее (помните, что шестнадцатеричное 10 — это не десять, а шестнадцать).
Но что же делать, если вы столкнулись с восьмеричным или шест-надцатеричным числом? Формула перевода их в нашу привычную систему счисления похожа на формулу для двоичной системы. Только здесь значения каждого знака надо умножать не на 2, а на 8 для восьмеричной и на 16 для шестнадцатеричной систем (разумеется, нельзя забывать, что 8 или 16 надо также возводить в степень п-1).
Ну а если надо перевести десятичное число в восьмеричную или ше-стнадцатеричную систему? Формула и здесь такая же, как и для двоичной, но надо делить число не на 2, а на 8 или 16 соответственно. При делении на 16, если остаток превышает или равен 10, его надо заменить на латинскую букву (10 на А, 11 на В, и т. д.).
Замечу, что переводить дробные числа по этим формулам нельзя. Для них есть другая формула. Запишите число, а строго под ним — результат от умножения этого числа на основание системы, в которую надо перевести (это 2, 8 или 16). Как только число становится больше 1, то под ним запишите результат умножения дробной части этого числа, не трогая целой. Например, надо перевести в двоичную систему дробное число 0,625
Приумножении на 2 будет 1,25: 0,25 на 2 — 0,5; 0,5 на 2 — 1,0.
Дробная часть равна 0, следовательно, результат получен. Надо записать целые части чисел, начиная сверху. Если не забудете поставить запя-ю после первого нуля, у вас получится правильный результат: 0,101.