Найти тему
NikPnnk

Системы счисления. Основания 2, 8, 16. В чём их "фишка"?

Оглавление

Добрый вечер! Продолжаем готовиться к ЕГЭ по информатике. Сегодня разберемся с частными видами систем счисления, поймём, для чего они нужны и почему они так прочно повязаны.

(Прим.: Статья предназначена для сторонних читателей с некоторой базой. Если вы не понимаете, что такое системы счисления, как они работают и почему они так работают, то настоятельно рекомендую сначала восполнить этот пробел).

Приступим!

Начнём с простого:
двоичная система счисления. Она упрощена донельзя относительно других систем. Если в десятичной у вас есть целых 10 возможных состояний разряда (от 0 до 9), то двоичная может либо иметь значение в разряде, либо не иметь (1 или 0). Таким образом перевод в неё упрощается, появляется простор для новых математических операций, а компьютеру становится в разы проще с ней работать. Однако давайте по порядку.

Для начала -- про лёгкий перевод. Как я и сказал, в двоичную систему (впрочем, и из неё) достаточно просто переводить из десятичной. Так как каждый разряд либо есть (1), либо пропущен (0), мы можем последовательным разбором числа на степени двойки перевести его без единой операции деления. Возьмём, например, 972. Оценим его "сверху". Ближайшая степень двойки сверху -- 10, 972 не превосходит 1024. Тогда будем вычитать меньшие степени двойки, пока не дойдём до нуля (все операции, которые опускают нас ниже нуля, отменим). Следите за руками:

972-512=460 (1)

460-256=204 (1)

204-128=76 (1)

76-64=12 (1)

12-32 < 0 (0)

12-16 < 0 (0)

12-8 = 4 (1)

4-4 = 0 (1)

0 - 2 < 0 (0)

0 - 1 < 0 (0)

Таким образом, без единой операции деления, получаем 972 в десятичной = 1111001100 в двоичной. Аналогично, рассуждая в обратном направлении, можно превращать каждую единичку в степень двойки и складывая, можем перевести двоичное число в десятичное.

Своим читателям предложу перевести следующие числа и прислать в лс (@NikPnnK) на проверку:

127 ->

569 ->

1572 ->

10011101 ->

111101 ->

111011110 ->

Практическая польза двоичной системы счисления

Разберемся, для чего нам это понимать.

Во-первых, вы встретите двоичную систему счисления в 5 и 14 задачах, частично в 15 задаче в ближайший год.

Во-вторых, двоичное исчисление настигнет вас в университете уже следующей осенью. (Конечно, если вы постараетесь туда попасть :) )

В-третьих, все математические операции компьютер производит в двоичной системе, отсюда ощутимая часть прикладных задач потребуют некоторых знаний в этой области.

Если этого недостаточно, прибегайте в личные сообщения, постараюсь проконсультироваться со своими товарищами-программистами и дать более развернутый ответ :)

Системы с основанием 8 и 16

Далее на очереди "дети" двоичного кода. Восьмеричные и шестнадцатеричные числа нужны нам неслучайно. Особо внимательный читатель мог заметить, что 8 и 16 -- степени двойки. Отсюда заметим Любопытное свойство, рассмотрев первые 16 чисел в трёх системах:

Проанализируем эту таблицу. Во-первых, мы впервые встретились с ЦИФРОЙ, которая больше девяти. До этого нам было достаточно набора 0-9, однако теперь, в шестнадцатеричной, мы ими не ограничены. Будем считать цифрами, которые выше 9, латинский алфавит. Так, например, 10 - A, а 15 - F.

Во-вторых, заметим, что разряды двоичной и родственных ей систем "переключаются" синхронно в определенные моменты. Так, до 8 все числа вели себя вполне понятно, а вот на восьмёрке и двоичная, и восьмеричная перешли на следующий разряд. Чтобы лучше проследить эту механику, рассмотрим числа побольше.

-2

Тенденция, замеченная нами ранее, и правда выполняется. Теперь мы даже можем оценить периодичность: с добавлением 4, 7, 10 и так далее разрядов в двоичную, добавляется один разряд в восьмеричную. С добавлением 5, 9, 13 и так далее, добавляется один разряд в шестнадцатеричную. Такая замечательная симметрия даёт нам любопытное правило: мы можем не думать о десятичном представлении числа и переводить сразу из 2 в 8 или 16 систему (справедливо и обратное).

Метод, к которому мы подошли, называется "триадами" и "тетрадами". Разберемся подробнее:

Каждые 3 разряда двоичной системы (здесь и далее разряды "двоички" автор будет называть битами) изолированно определяют один разряд восьмеричной системы. Так, первые три цифры двоичного числа перейдут в одну восьмеричную цифру, следующие три цифры -- во вторую и так далее. Приведу пример:

-3

Заметим, что если последней цифре "не хватает" бит, мы добиваем их нулями до трёх (1 -> 001). Эти нули далее будем называть незначащими.

Аналогичное справедливо и для шестнадцатеричной, но по четвёркам:

-4

Так же рассмотрим обратный перевод, перед тем как переходить к следующему пункту наших наблюдений.

-5

(Опять таки, справедливо и для восьмеричной, но по тройкам. Особо любознательному читателю предлагаю проверить, последовательно переведя триадами и "классическим" переводом с пересадкой в десятичной).

ДЗ(Буду рад, если оно будет с решениями в тетради/редакторе картинок):

-6

Для чего мне лишние системы?

Действительно, восьмеричная и шестнадцатеричная система выглядят просто как "надстройка" над двоичной. Однако самые внимательные могли заметить, что следить за двоичными числами, которые имеют больше четырёх знаков, достаточно сложно. единицы сливаются в один "забор" и совершенно отказываются читаться.

Уверяю вас, когда их количество перевалит за 30, станет ещё сложнее. Для этого мы имеем системы "побольше". Так, цвета в RGB формате приятнее читать как 00ffff, нежели 000000001111111111111111 (Я и сам, честно говоря, затрудняюсь посчитать количество цифр здесь). Аналогичная ситуация встретит вас в маршрутизации, битовых масках и других сферах IT-жизни. Знание "вспомогательных" систем требует пары часов освоения, а спасает от сотни часов "мучений" :)

Текст снова получился слишком длинным: если я пишу его 45 минут, то и для освоения он потребует примерно того же количества времени. Поэтому здесь возьмём паузу. В следующем посте разберёмся с 14 заданиями ЕГЭ по информатике :)


Спасибо за ваше внимание. Все пожелания прошу присылать в лс телеграмма (@NikPnnK).

Наука
7 млн интересуются