Система счисления — это форма записи чисел при помощи набора цифр. Другими словами, система счисления — это способ представления чисел. Например, в десятичной системе мы используем цифры от 0 до 9.
Системы, с которыми мы будем часто сталкиваться, изучая программирование — десятичная, двоичная и шестнадцатеричная. Прежде чем мы углубимся в этот вопрос, давайте для начала рассмотрим их общие характеристики.
Основание системы счисления — это количество цифр, которые мы используем для представления чисел. Такой набор символов (чисел) часто также называют алфавитом системы счисления.
Системы счисления обычно называют в соответствии со значением их основания. Например, в десятичной системе используется 10 чисел.
В позиционных системах счисления значение (вес) цифры зависит от ее положения. Например:
10 — цифра 1 имеет значение десять.
1000 — та же цифра 1 имеет значение тысяча, поскольку занимает другое положение.
В непозиционных системах счисления значение цифр не зависит от их положения. Примером является римская система счисления. Например:
X — цифра означает десять.
ХХХ — каждая цифра имеет значение 10, а число XXX равно их сумме, т. е. 30.
LX — L = 50, X = 10, поэтому число LX = 60.
Все позиционные системы счисления представляют числа похожим образом. Для записи некоторого числа нам необходимо разбить его на сумму степеней основания данной системы. Это звучит сложнее, чем является на самом деле. Например:
1572 = 1 × 103 + 5 × 102 + 7 × 101 + 2 × 100
В данном случае мы использовали степень числа 10, поскольку это основание десятичной системы счисления. То же правило применимо и к любой другой системе счисления. Мы всегда начинаем со степени 0 и увеличиваем ее на единицу для каждой следующей позиции справа налево.
Зачем нам использовать двоичные числа, если десятичная система так хорошо служила людям в течение многих лет?
Дело в том, что центральный процессор компьютера (CPU), который состоит из миллионов транзисторов, понимает только два состояния: 0 — когда транзистор выключен, 1 — когда включен. Поэтому все в компьютере сводится к единицам и нулям.
Каждое из этих значений называется битом (bit — binary digit). Каждый бит может иметь значение 1 или 0.
Десятичная система, которую мы используем в повседневной жизни, начиналась со счета на пальцах. Позднее пальцы заменились индо-арабскими символами: десятью типами знаков от 0 до 9, которые комбинировались для отображения больших чисел (например, 108).
В десятичной системе счисления каждая цифра числа может быть представлена как число, кратное 10 в некоторой степени. Давайте рассмотрим это на примере числа 408.
8 × 100 = 8
0 × 101 = 0
4 × 102 = 400
Сложив все значения, получим
8 + 0 + 400 = 408
Двоичная система похожа на десятичную, за исключением того, что основание системы равно двум, а для записи чисел используются только 0 и 1.
Точно таким же способом мы можем перевести число 110011000, которое равно 408 в двоичной системе.
(0 × 20) + (0 × 21) + (0 × 22) + (1 × 23) + (1 × 24) + (0 × 25) + (0 × 26) + (1 × 27) + (1 × 28) = 8 + 16 + 128 + 256 = 408
Для преобразования десятичных чисел в двоичные мы будем использовать метод деления на 2.
Каждый раз, когда мы делим некоторое число, мы получаем два числа — остаток (новое неполное делимое) и частное. Когда мы делим некоторое число на 2, то всегда получаем остаток, который равен или 0, или 1, другими словами, двоичные цифры.
При использовании метода деления на 2 мы будем продолжать делить число до тех пор, пока делимое не будет равно нулю. Остаток от первого деления — это наименьший значащий разряд числа; каждый следующий остаток от деления записывается слева от предыдущего числа.
Давайте рассмотрим преобразования числа 6210 в двоичную систему счисления.
6210 = 1111102
Сложение двоичных чисел похоже на сложение десятичных чисел, однако есть некоторые различия.
Давайте начнем счет с 010 и будем увеличивать число на единицу, пока не достигнем значения 510.
Мы видим, что при сложении двоичных чисел нужно быть очень аккуратным, поскольку перенос разряда происходит значительно чаще.
Для чисел с большим количество разрядов можно использовать привычное сложение столбиком.
Рассмотрим несколько примеров:
Вычитание двоичных чисел очень похоже на сложение, за исключением того, что вместо переноса разряда мы будем брать заём.
Давайте начнем вычитать единицу от 1010 до тех пор, пока не достигнем 510.
Точно так же, как и при вычитании десятичных чисел, если из меньшего числа вычитается большее, результатом будет отрицательное число.
Рассмотрим примеры:
Шестнадцатеричная система (или система с основанием 16) — это удобный и лаконичный способ представления двоичных чисел.
Шестнадцатеричные числа часто используются для обозначения таких данных, как, например, цвет или любых других, где нам необходима более компактная запись последовательности битов.
Алфавит шестнадцатеричной системы содержит 16 цифр: 10 арабских (0…9) и первые буквы латинского алфавита A (10), B (11) , C (12) , D (13) , E (14) и F (15).
Поскольку 16 = 24, одна шестнадцатеричная цифра соответствует четырем двоичным, то есть мы можем представить четыре двоичные цифры (4 бита) при помощи одной шестнадцатеричной цифры, что значительно упрощает преобразование чисел между системами с этими основаниями.
Согласно таблице преобразования шестнадцатеричных чисел, двоичная последовательность чисел 0110 0101 0000 10112 будет выглядеть в шестнадцатеричной системе следующим образом: 650B. Это число гораздо легче читать, чем длинную последовательность битов.