Баннер мобильный (3) Пройти тест

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

Глоссарий

23 июля 2024

Поделиться

Скопировано

Содержание

    Система счисления — это способ, которым записывают и представляют числа. Самая распространенная в нашем обществе — десятичная система, в которой используют цифры от 0 до 9. Но есть и другие системы счисления, их чаще всего используют в информатике и программировании.

    У большинства используемых систем счисления есть основание. Так называют число, на котором начинается другой разряд. Например, для десятичной системы это число 10 — первое, которое начинают записывать двумя цифрами, а не одной. Потом разряд меняется на числе 100 — десять десяток. И так далее.

    Примеры записи чисел в разных системах

    Число
    Десятичная
    Двоичная
    Восьмеричная
    Шестнадцатеричная
    0
    0
    0
    0
    0
    1
    1
    1
    1
    1
    10
    10
    1010
    12
    A
    25
    25
    11001
    31
    19
    100
    100
    1100100
    144
    64

    Еще у систем счисления есть алфавит — набор цифр, которые используют в той или иной системе. В той же привычной нам десятичной системе алфавит состоит из цифр от 0 до 9, а дальше уже приходится комбинировать несколько цифр. У систем с бо́льшим основанием алфавит может быть более длинным, поэтому для «дополнительных» цифр придумывают новые обозначения. Например, в шестнадцатеричной системе наравне с привычными цифрами используют буквы от A до F.

    Алфавиты систем счисления

    Система
    Алфавит
    Десятичная
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    Двоичная
    0, 1
    Восьмеричная
    0, 1, 2, 3, 4, 5, 6, 7
    Шестнадцатеричная
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

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

    Зачем нужны системы счисления

    По сути, система счисления — это просто способ, которым записывают число. Одно и то же число в разных системах может выглядеть по-разному, но при этом его суть останется прежней.

    Например, в десятичной системе счисления число выглядит как 20. В шестнадцатеричной — как 14. А в римской записи — как XX. Да, римская запись чисел — тоже система счисления.

    Изначально разные системы счисления появились в разных обществах в зависимости от их особенностей — те же римские и арабские цифры. В современном мире назначение у них немного другое. Дело в том, что люди привыкли мыслить десятками, а вот компьютеры — нет. Компьютеры изначально воспринимают числа в двоичной системе счисления, в которой существует только две цифры: 0 и 1. Всё, что больше единицы, уже считается числом из двух и более разрядов.

    Для десятичной системы числовой ряд выглядит так: 0, 1, 2, 3, 4, 5, 6… А для двоичной — так: 0, 1, 10, 11, 100, 101, 110… Позже мы разберем, как это работает. 

    Еще для компьютеров удобны восьмеричная и шестнадцатеричная системы счисления, основания которых — 8 и 16 соответственно. Реже применяются другие системы: троичная, шестеричная, двенадцатеричная и так далее.

    Кто и для чего использует системы счисления

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

    • цвета в формате RGB описывают числами в шестнадцатеричной системе. Например, белый — это #FFFFFF, а черный — #000000. Да, F в этом случае — тоже цифра;
    • символы в разных кодировках, например ASCII или UTF-8, тоже описывают числами в шестнадцатеричном формате. Иногда их же представляют в виде двоичных чисел;
    • в некоторых языках программирования, особенно в низкоуровневых вроде ассемблера, приходится работать с данными на уровне бит и байт — а способы хранения данных тесно связаны с двоичной и восьмеричной системами счисления.

    Разработчики, которые имеют дело только с высокоуровневыми языками вроде JavaScript, как правило, редко сталкиваются с системами счисления. Но понимать, как они устроены, айтишнику всё равно нужно — чтобы лучше разбираться в том, как функционируют компьютеры.

    Позиционные и непозиционные системы счисления

    Системы счисления делятся на две большие группы: позиционные и непозиционные. Расскажем, что это значит и чем они различаются.

    Непозиционные. Так называют системы, в которых не важна позиция цифры в числе. Где бы цифра ни находилась, она всегда имеет одно и то же значение. Самый яркий пример — унарная система счисления, она же единичная. Ее даже иногда выделяют в отдельный вид. В ней существует только одна цифра — 1. Поэтому, например, число 5 будет записываться как 11111. Если поменять единицы местами — ничего не изменится.

    Непозиционные системы счисления считаются самыми древними. Они возникли, когда люди впервые начали что-то подсчитывать и использовали для этого палочки, узелки или собственные пальцы. Позже они начали «группировать» цифры в числа, и возникли позиционные системы счисления.

    Второй пример непозиционной системы, менее очевидный, — римская запись. Символ X всегда будет означать десятку, а символ V — пятерку, в каком бы месте их ни поставили. Даже в числах вроде IV, где I перед V означает «-1», I всё равно будет единицей, а V — пятеркой. От положения цифры зависит только ее знак, но не ее вес.

    Непозиционные системы используются редко. В них нет нуля, нет дробных чисел и других инструментов, которые бывают важны в современных вычислениях.

    Позиционные. Сюда относятся десятичная, двоичная и большинство других современных систем счисления. В таких системах есть разряды, зависящие от позиции. Значение цифры меняется в зависимости от того, в каком месте она находится. Например, в числе 15 пятерка означает «пять единиц», а в числе 54 — «пять десятков».

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

    Позиционные системы счисления в свою очередь делятся на две категории — однородные и смешанные.

    • Однородные системы — такие, в которых правила записи одинаковые для всех разрядов. В каждом разряде можно использовать один и тот же алфавит. Десятичная система именно такая. И в единицах, и в десятках, и в сотнях или тысячах мы пользуемся цифрами от 0 до 9.
    • Смешанные системы — такие, где у разных разрядов различаются правила записи или даже основание. Например, система подсчета времени. У разряда «минуты» основание 60, и минуты можно обозначать числами от 0 до 59. На 60 число переходит в разряд «часы». А у разряда «часы» основание 24, и количество часов можно обозначать цифрами от 0 до 23. На 24 число переходит в разряд «сутки». И так далее.

    Смешанные системы используют реже, чем однородные — исключением можно назвать разве что подсчет времени. Но, например, смешанной системой считается факториальная: 2! — это 2, 3! — уже 6, а 4! — 24. Видно, что основание меняется, а сама система нелинейная.

    Распространенные системы счисления в информатике

    Практически все системы, которые используют в компьютерной технике, — позиционные и однородные. Как правило, у них четное основание, которое соответствует какой-либо из степеней двойки. Это связано с особенностями хранения данных в памяти компьютера. Рассмотрим три наиболее популярных в информатике системы счисления: двоичную, восьмеричную и шестнадцатеричную.

    Двоичная. Это система с основанием 2 и алфавитом, который состоит всего из двух цифр — 0 и 1. Необходимость использовать двоичную систему появилась из-за того, как компьютеры представляют информацию: в виде бит. Бит может принимать только значение «0» или «1» — «тут нет единицы информации» или «тут есть единица информации».

    • 0 означает ноль, отсутствие информации.
    • 1 означает единицу, например записанную в какую-то ячейку памяти.
    • Цифры 2 в системе нет. Если число достигает значения 2, оно переходит в другой разряд и записывается как 10 — одна двойка и ноль единиц. Соответственно, число 3 будет записываться как 11 — одна двойка и одна единица.
    • Дальше разряды увеличиваются по тому же принципу. Число 4 — это 100, то есть две двойки и 0 единиц. Число 8 — 1000, и так далее. Каждая новая степень двойки — новый разряд.

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

    Восьмеричная. Эту систему используют чуть реже, чем двоичную и шестнадцатеричную. Чаще всего ее упоминание можно встретить при работе с низкоуровневыми языками программирования, которые близки к «железу» и способны обрабатывать данные напрямую. Компьютеры объединяют части бинарного кода в блоки по 8 двоичных цифр — байты. Отсюда появилась и необходимость работать с восьмеричной системой.

    • Основа системы счисления — 8. Это значит, что от 0 до 7 цифры идут как обычно, а когда число доходит до 8, начинается другой разряд и число записывается как 10.
    • Соответственно, число 9 будет записываться как 11, а число 10 — как 12.
    • Число 16 в восьмеричной системе записывается как 20, потому что шестнадцать — это два раза по восемь. И так далее.
    • Число 64 в восьмеричной системе будет выглядеть как 100, потому что это восемь раз по восемь.

    Шестнадцатеричная. С этой системой счисления сталкиваются не только разработчики, но и, например, дизайнеры — в ней кодируются цвета RGB. Еще в этой системе записываются коды символов во многих кодировках. Основание шестнадцатеричной системы — число 16. Оно больше десяти, поэтому в алфавите появляются дополнительные цифры, которые обозначают буквами.

    • От 0 до 9 цифры идут как обычно. Но на десяти разряд еще не меняется, поэтому для обозначения десятки нужна новая цифра. В качестве этой «цифры» используют латинскую букву A.
    • Соответственно, «цифра» 11 — это B, 12 — C, и так далее до F, которая обозначает «цифру» 15.
    • Когда счет доходит до шестнадцати, разряд меняется. Следующее число после F в шестнадцатеричной системе — 10.
    • Числа в шестнадцатеричной системе выглядят меньше, чем в десятичной. Например, 100 в шестнадцатеричной системе — это 16 раз по 16, то есть 16 в квадрате. В десятичной системе это число 256.
    • Цифры в виде букв могут встречаться в начале, конце или середине числа. Например, 1A — это 26. Единица обозначает один раз по шестнадцать, а A — «цифру» десять.

    Перевод чисел из одной системы счисления в другую

    Иногда число в одной системе счисления нужно представить в другой. Для этого используют специальные алгоритмы, чтобы упростить задачу и не высчитывать разряды вручную.

    Перевод из десятичной системы в другую. Алгоритм такой: нужно шаг за шагом делить число в десятичной системе на основание той системы, в которую мы его переводим. Это делается до тех пор, пока исходное число не станет равным 0. Остаток от деления — это цифра в новом числе. Остатки записывают начиная с последнего и заканчивая первым и так получают число в нужной системе счисления.

    Например, число 13 в десятичной системе мы хотим перевести в двоичную. 

    1. Мы делим 13 на 2 — получаем 6, остаток 1. 
    2. Потом делим 6 на 2 — получаем 3, остаток 0. 
    3. Потом делим 3 на 2 — получаем 1, остаток 1. 
    4. Потом делим 1 на 2 — получаем 0, остаток 1.
    5. Исходное число стало равным нулю — значит, мы закончили. Теперь записываем остатки в обратном порядке: 1, 1, 0, 1. Выходит число в двоичной системе — 1101.

    Перевод из любой системы в десятичную. Тут способ немного более запутанный, но на самом деле несложный. Нужно взять число в нужной системе счисления и пронумеровать его разряды с конца, начиная с 0. Самая последняя цифра — нулевой разряд, вторая с конца — первый разряд, и так далее. Затем каждую из цифр нужно умножить на основание системы счисления, которое предварительно возвели в степень номера разряда. Полученные числа нужно сложить.

    Например, есть число 93 в шестнадцатеричной системе счисления. Мы хотим перевести его в десятичную.

    1. Нумеруем разряды числа. У цифры 9 номер 1, у цифры 3 номер 0.
    2. Основание системы — 16. 16 в первой степени — это 16, а 16 в нулевой степени — это 1.
    3. Цифру 9 мы умножаем на 16, а цифру 3 — на 1. Получаем числа 144 и 3.
    4. Складываем 144 и 3, получаем число 147 в десятичной системе счисления.

    Перевод в восьмеричную систему счисления. Начиная с правого конца, делим двоичное число на триады: на группы по 3 цифры. Добавляем слева недостающие нули, чтобы все группы были трехзначными.

    Затем заменяем каждую триаду на соответствующую восьмеричную цифру: в этом поможет таблица соответствия между триадами и восьмеричными цифрами.

    Записываем полученные восьмеричные цифры слева направо — итоговое число в восьмеричной системе готово.

    Пример:

    Хотим преобразовать число 1101011010 в восьмеричную систему.

    Решение:

    1. Делим на триады: 011 010 110 10
    2. Заменяем триады: 3 2 6 2
    3. Соединяем цифры: 3262

    Ответ: 3262 восьмеричное = 1101011010 двоичное.

    Перевод в шестнадцатеричную систему счисления. Начиная с правого конца, делим число на тетрады: группы по 4 цифры. Добавляем слева недостающие нули, чтобы все группы были четырехзначными.

    Заменяем каждую тетраду на соответствующую шестнадцатеричную цифру: в этом поможет таблица соответствия между тетрадами и шестнадцатеричными цифрами.

    Соединяем шестнадцатеричные цифры слева направо,— итоговое число в шестнадцатеричной системе готово.

    Пример:

    Хотим преобразовать число 101011101010111101010101111110111010101110111010101011101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010

    Решение:

    1. Делим число на тетрады
    2. Заменяем тетрады: A 5 B A 5 F E B C E A 5 6 7 4 2 E A 5 6 7 4 2 E A 5 6 7 4 2 E A 5 6 …
    3. Соединяем цифры: A5B5F7EBCE56742EA56742EA56742EA56742E

    Как изучить системы счисления

    Часто системы счисления проходят в школе на уроках информатики или математики. Но не всегда эту тему включают в программу. Тем не менее это одно из базовых понятий компьютерных наук — для успешной карьеры в IT лучше понимать, что такое системы счисления и как они работают. Вы можете воспользоваться онлайн-учебниками, статьями и туториалами или бесплатными курсами по основам информатики. Так как тема считается базовой, информации по ней много, в том числе ориентированной на новичков.

    Поделиться

    Скопировано

    0 комментариев

    Комментарии