
Десятичное и двоичное представление чисел
Для работы с числовой информацией мы пользуемся системой счисления, содержащей десять цифр: от до . Эта система называется десятичной.
Кроме цифр, в десятичной системе большое значение имеют разряды. Подсчитывая количество чего-нибудь и дойдя до самой большой из доступных нам цифр (до ), мы вводим второй разряд и дальше каждое последующее число формируем из двух цифр. Дойдя до , мы вынуждены вводить третий разряд. В пределах трех разрядов мы можем досчитать уже до и т.д.
Таким образом, используя всего десять цифр и вводя дополнительные разряды, мы можем записывать и проводить математические операции с любыми, даже самыми большими числами.
Компьютер ведет подсчет аналогичным образом, но имеет в своем распоряжении всего две цифры - логический ноль (отсутствие у бита какого-то свойства) и логическую единицу (наличие у бита этого свойства).
Система счисления, использующая только две цифры, называется двоичной. При подсчете в двоичной системе добавлять каждый следующий разряд приходится гораздо чаще, чем в десятичной.
Вот таблица первых десяти чисел в каждой из этих систем счисления:
Рисунок 1.
Как видите, в десятичной системе счисления для отображения любой из первых десяти цифр достаточно разряда. В двоичной системе для тех же целей потребуется уже разряда.
Соответственно, для кодирования этой же информации в виде двоичного кода нужен носитель емкостью как минимум бита ( байта). Человеческий мозг, привыкший к десятичной системе счисления, плохо воспринимает систему двоичную. Хотя обе они построены на одинаковых принципах и отличаются лишь количеством используемых цифр. В двоичной системе точно так же можно осуществлять любые арифметические операции с любыми числами. Главный ее минус - необходимость иметь дело с большим количеством разрядов.
Так, самое большое десятичное число, которое можно отобразить в 8 разрядах двоичной системы - , в разрядах – , в разрядах – .
Алгоритмы кодирования чисел в двоичной системе счисления
Компьютер, кодируя числа в двоичный код, основывается на двоичной системе счисления. Но, в зависимости от особенностей чисел, может использовать разные алгоритмы:
-
Небольшие целые числа без знака.
Для сохранения каждого такого числа на запоминающем устройстве, как правило, выделяется байт ( битов). Запись осуществляется в полной аналогии с двоичной системой счисления.
Целые десятичные числа без знака, сохраненные на носителе в двоичном коде, будут выглядеть примерно так:
Рисунок 2. -
Большие целые числа и числа со знаком.
Для записи каждого такого числа на запоминающем устройстве, как правило, отводится -байтний блок ( битов).
Старший бит блока (тот, что крайний слева) отводится под запись знака числа и в кодировании самого числа не участвует. Если число со знаком "плюс", этот бит остается пустым, если со знаком "минус" – в него записывается логическая единица. Число же кодируется в оставшихся 15 битах. Например, алгоритм кодирования числа будет следующим:
- Перевести число из десятичной системы счисления в двоичную. В итоге получится ;
- Записать полученное двоичное число в первые бит -битного блока (начиная с правого края). Последний, -й бит, должен остаться пустым, поскольку кодируемое число имеет знак .
В итоге в двоичном коде на запоминающем устройстве будет выглядеть так:
Рисунок 3.Примечательно, что в двоичном коде присвоение числу отрицательного значения предусматривает не только изменение старшего бита. Осуществляется также инвертирование всех остальных его битов.
Чтобы было понятно, рассмотрим алгоритм кодирования числа :
- Перевести число из десятичной системы счисления в двоичную. Получим все тоже двоичное число ;
- Записать полученное двоичное число в первые бит -битного блока. Затем инвертировать, то есть, изменить на противоположное, значение каждого из битов;
- Записать в -й бит логическую единицу, поскольку кодируемое число имеет отрицательное значение.
В итоге на запоминающем устройстве в двоичном коде будет иметь следующий вид:
Рисунок 4.Запись отрицательных чисел в инвертированной форме позволяет заменить все операции вычитания, в которых они участвуют, операциями сложения. Это необходимо для нормальной работы компьютерного процессора.
Максимальным десятичным числом, которое можно закодировать в битах запоминающего устройства, является . Иногда для записи чисел по этому алгоритму выделяются -байтные блоки. В таком случае для кодирования каждого числа будет использоваться бит плюс бит для кодирования знака числа. Тогда максимальным десятичным числом, сохраняемым в каждую ячейку, будет (со знаком плюс или минус).
-
Дробные числа на запоминающем устройстве в двоичном коде кодируются в виде так называемых чисел с плавающей запятой (точкой). Алгоритм их кодирования сложнее, чем рассмотренные выше. Тем не менее, попытаемся разобраться.
Для записи каждого числа с плавающей запятой компьютер чаще всего выделяет -байтную ячейку ( бита):
- в старшем бите этой ячейки (тот, что крайний слева) записывается знак числа. Если число отрицательное, в этот бит записывается логическая единица, если оно со знаком "плюс" – бит остается пустым.
- во втором слева бите аналогичным образом записывается знак порядка (что такое порядок поймете позже);
- в следующих за ним битах записывается значение порядка.
- в оставшихся битах записывается так называемая мантисса числа.
Рисунок 5.Чтобы стало понятно, что такое порядок, мантисса и зачем они нужны, переведем в двоичный код десятичное число .
Порядок кодирования будет примерно следующим:
- Перевести десятичное число в двоичное (десятичное равно двоичному );
- Определить мантиссу числа. Для этого в числе необходимо передвинуть запятую в нужном направлении, чтобы слева от нее не осталось ни одной единицы. В нашем случае запятую придется передвинуть на три знака влево. В итоге, получим мантиссу, ;
- Определить значение и знак порядка. Значение порядка – это количество символов, на которое была сдвинута запятая для получения мантиссы. В нашем случае оно равно (или в двоичной форме);
Знак порядка – это направление, в котором пришлось двигать запятую: влево – "плюс", вправо – "минус". В нашем примере запятая двигалась влево, поэтому знак порядка – "плюс".
Таким образом, порядок двоичного числа будет равен , а его мантисса, . В результате в двоичном коде на запоминающем устройстве это число будет записано следующим образом
Рисунок 6.
Обратите внимание, что мантисса в двоичном коде записывается, начиная с первого после запятой знака, а сама запятая упускается. Числа с плавающей запятой, кодируемые в битах, называю числами одинарной точности. Когда для записи числа -битной ячейки недостаточно, компьютер может использовать ячейку из битов. Число с плавающей запятой, закодированное в такой ячейке, называется числом двойной точности.
