Системы счисления

СИСТЕМЫ СЧИСЛЕНИЯ

— А все-таки, в какой системе счисления

луч­ше получать зарплату?

Из размышлений программиста Плюшкина

 

Человек, как известно, может распознавать тысячи (если не милли­оны) видов всевозможных сигналов.

Когда мы читаем книгу, минимальным информационным элемен­том для нас становится буква, цифра или знак препинания. Итого — несколько десятков различных символов! При разговоре же мы должны распознавать уже сотни (если не тысячи) минимальных сигналов — звуки, элементы интонации, мимические и жестовые сигналы…

Нам, людям, это трудным не кажется. Но наш мозг учится искусст­ву понимания этих сигналов долгие годы, методом проб и ошибок пе­реводя внешние сигналы в понятные ему нервные импульсы, несущи­еся по нейронным сетям. Эти импульсы и есть основной, изначальный язык мозга.

Ну а как обстоит дело в компьютере? Точно так же — вся поступаю­щая извне информация переводится на самый простой для компьюте­ра язык, язык машинных кодов в двоичной системе. Вот с этой «азбу­ки» информационной науки мы и начнем.

Впрочем, азбука ли это? Ведь букв-то как раз здесь и нет, одни циф­ры — не зря же компьютерные технологии нередко называют еще и «цифровыми». Да и цифр немного — всего две:

  — отсутствие сигнала;

  — его наличие.

Хорошая азбука, что и говорить! Такую даже первоклассник выучит за секунду… Да только мала — много ли слов составишь из ее «букв»?

Немного. Но для компьютера — вполне достаточно.

«Слова» эти, в отличие от человеческого языка, одинаковы по длине, в каждом из них — ровно восемь знаков. И выглядят эти «слова» вот так:

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.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *