Рис. 2.4. Лист MS
Наибольшее применение при вводе, обработке и выводе информации в компьютере и компьютерных системах нашли позиционные системы счисления, при этом самыми распространенными являются десятичная, двоичная, восьмеричная и шестнадцатеричная системы. В позиционных системах счисления количественное значение цифры зависит от ее позиции в числе. Основание системы равно количеству цифр (знаков ее алфавита) и определяет, во сколько раз различаются значения цифр соседних разрядов числа. В общем случае в позиционной системе счисления любое число, содержащее целую и дробные части, в развернутой форме может быть представлено в виде:
или в рекуррентной форме:
где
В десятичной системе счисления формула (2.2) может быть записана следующим образом:
где
Например, число 827 десятичной системы счисления в соответствии с выражением (2.3) можно представить в виде: 827 = 8 · 102 + 2 · 101 + 7 · 100.
Десятичная система исчисления используется в компьютерах для ввода числовых данных и отображения полученного результата. Все внутренние, промежуточные операции компьютер производит в двоичной системе счисления и соотношение (2.2) примет вид:
где а = 0, 1.
Например, число 11001110112 двоичной системы счисления в соответствии с формулой (2.4) можно представить в виде: 1 · 29 + 1 · 28 + 0 · 27 + 0 · 26 + 1 · 25 + 1 · 24 + 1 · 23 + 0 · 22 + 1 · 21 + 1 · 20.
Достаточно широко при компьютерной обработке информации применяются восьмеричная и шестнадцатеричная системы счисления, которые используются, например, для обозначения адресов расположения данных в памяти компьютера и т. д.
Соотношение (2.2) для восьмеричной и шестнадцатеричной системы счисления соответственно примет вид (2.5) и (2.6) :
где а = 0, 1, 2, 3…, 7.
Например, число 14738 восьмеричной системы счисления в соответствии с (2.5) примет вид: 1 · 83 + 4 · 82 + 7 · 81 + 3 · 80.
где
В шестнадцатеричной системе счисления используется шестнадцать цифр, из которых десять цифр арабские (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), а остальные цифры (10, 11, 12, 13, 14, 15) обозначаются буквами латинского алфавита (А = 10, В = 11, С = 12, D = 13, E = 14, F = 15).
Например, число 33B16 шестнадцатеричной системы счисления, в соответствии с (2.6) примет вид: 3 · 162 + 3 · 161 +
При операциях с числами, представленными в различных системах счисления, необходимо указывать систему счисления числа, используя нижний индекс, например: 82710 – число 827 в десятичной системе; 11001110112 – число 1100111011 в двоичной системе; 14738 – число 1473 в восьмеричной системе; 33B16 – число
Преобразование чисел, представленных в двоичной, восьмеричной и шестнадцатеричной системах счисления, в десятичную осуществляется достаточно просто. Для этого необходимо записать число в развернутой форме в соответствии с выражением (2.1) и вычислить его значение. Например:
Преобразование чисел, представленных в десятичной системе счисления, в двоичную, восьмеричную и шестнадцатеричную системы счисления – более сложная процедура, которая может осуществляться различными способами: деления, умножения, вычитания и т. д. При этом необходимо учитывать, что способы перевода целых десятичных чисел и правильных дробей будут различаться. Для перевода целого десятичного числа, например 5310, в двоичную систему можно использовать способ деления, а десятичной правильной дроби, например 0,7510, в двоичную систему – способ умножения. Результаты действий отобразим в соответствующих табл. 2.1 и 2.2.
Таким образом, 5310 = 1101012.
Таким образом, 0,7510 = 0,112.
Перевод чисел из одной системы счисления в другую достаточно просто реализуется с помощью компьютерных программ Калькулятор и
Преобразуем число
Рис. 2.5. Программа «Калькулятор»
Последовательность действий при преобразовании шестнадцатеричного числа
2.2. Арифметические операции над числами, представленными в различных системах счисления
Арифметические операции во всех позиционных системах счисления выполняются по одним и тем же правилам. Для проведения арифметических операций над числами, представленными в различных системах счисления, необходимо предварительно преобразовать их в одну систему счисления и учесть то, что перенос в следующий разряд при операции сложения и заем из старшего разряда при операции вычитания определяется величиной основания системы счисления.
Арифметические операции в двоичной системе счисления основаны на таблицах сложения, вычитания и умножения одноразрядных двоичных чисел.
При сложении двух единиц происходит переполнение разряда и производится перенос единицы в старший разряд, при вычитании 0–1 производится заем из старшего разряда, в таблице «Вычитание» этот заем обозначен 1 с чертой над цифрой.
Ниже приведены примеры выполнения арифметических операций над числами, представленными в различных системах счисления:
Арифметические операции над целыми числами, представленными в различных системах счисления, достаточно просто реализуются с помощью программ Калькулятор и
2.3. Представление чисел в компьютере
Числовые данные обрабатываются в компьютере в двоичной системе счисления. Числа хранятся в памяти компьютера в двоичном коде, т. е. в виде последовательности нулей и единиц, и могут быть представлены в формате с фиксированной или плавающей запятой.
Целые числа хранятся в памяти в формате с фиксированной запятой. При таком формате представления чисел для хранения
Максимальное значение целого неотрицательного числа, которое может храниться в регистре в формате с фиксированной запятой, можно определить из формулы:
В отличие от десятичной системы в двоичной системе счисления при компьютерном представлении двоичного числа отсутствуют символы, обозначающие знак числа: положительный (+) или отрицательный (-), поэтому для представления
а отрицательное число -53610 = 10000010000110002 в виде:
Максимальное положительное число или минимальное отрицательное в формате значения числа со знаком (с учетом представления одного разряда под знак) равно
Наиболее часто для представления целых чисел со знаком в двоичной системе применяется формат дополнительного кода, который позволяет заменить арифметическую операцию вычитания в компьютере операцией сложения, что существенно упрощает структуру микропроцессора и увеличивает его быстродействие.
Для представления целых отрицательных чисел в таком формате используется дополнительный код, который представляет собой дополнение модуля отрицательного числа до нуля. Перевод целого отрицательного числа в дополнительный код осуществляется с помощью следующих операций:
1) модуль числа записать прямым кодом в
2) получить обратный код числа (инвертировать все разряды числа, т. е. все единицы заменить на нули, а нули – на единицы);
3) к полученному обратному коду прибавить единицу к младшему разряду.
Например, для числа -53610 в таком формате модуль будет равен 00000010000110002, обратный код – 1111110111100111, а дополнительный код – 1111110111101000. Проверим полученное значение дополнительного кода с помощью калькулятора. Для этого введем значение модуля числа -53610, т. е. число 53610, и с помощью опционной кнопки Bin преобразуем это число, представленное в десятичной системе счисления, в двоичную систему, предварительно установив опционную кнопку 2 байта. Нажав кнопку Not калькулятора, получим обратный код числа, а прибавив к обратному коду двоичную единицу, – дополнительный код. Окончательный результат получим в поле окна программы Калькулятор (рис. 2.6). Можно поступить еще проще: набрав на калькуляторе число -53610 и активизировав кнопку Bin, получить дополнительной код этого числа в двоичной системе счисления.
Рис. 2.6. Результат получения дополнительного кода
Необходимо помнить, что дополнительный код положительного числа – само число.
Для хранения целых чисел со знаком помимо 16-разрядного компьютерного представления, когда используются два регистра памяти (такой формат числа называется также форматом коротких целых чисел со знаком), применяются форматы средних и длинных целых чисел со знаком. Для представления чисел в формате средних чисел используется четыре регистра (4 х 8 = 32 бит), а для представления чисел в формате длинных чисел – восемь регистров (8 х 8 = 64 бита). Диапазоны значений для формата средних и длинных чисел будут соответственно равны: -(231 – 1) … + 231 – 1 и -(263-1) … + 263 – 1.
Компьютерное представление чисел в формате с фиксированной запятой имеет свои преимущества и недостатки. К преимуществам относятся простота представления чисел и алгоритмов реализации арифметических операций, к недостаткам – конечный диапазон представления чисел, который может быть недостаточным для решения многих задач практического характера (математических, экономических, физических и т. д.).
Вещественные числа (конечные и бесконечные десятичные дроби) обрабатываются и хранятся в компьютере в формате с плавающей запятой. При таком формате представления числа положение запятой в записи может изменяться. Любое вещественное число
где
Выражение (2.7) для десятичной системы счисления примет вид:
для двоичной —
для восьмеричной —
для шестнадцатеричной —
и т. д.
Такая форма представления числа также называется нормальной. С изменением порядка запятая в числе смещается, т. е. как бы плавает влево или вправо. Поэтому нормальную форму представления чисел называют формой с плавающей запятой. Десятичное число 15,5, например, в формате с плавающей запятой может быть представлено в виде: 0,155 · 102; 1,55 · 101; 15,5 · 100; 155,0 · 10-1; 1550,0 · 10-2 и т. д. Эта форма записи десятичного числа 15,5 с плавающей запятой не используется при написании компьютерных программ и вводе их в компьютер (устройства ввода компьютеров воспринимают только линейную запись данных). Исходя из этого выражение (2.7) для представления десятичных чисел и ввода их в компьютер преобразовывают к виду
где
т. е. вместо основания системы счисления 10 пишут букву
Независимо от системы счисления любое число в форме с плавающей запятой может быть представлено бесконечным множеством чисел. Такая форма записи называется ненормализованной. Для однозначного представления чисел с плавающей запятой используют нормализованную форму записи числа, при которой мантисса числа должна отвечать условию
где
Условие (2.9) означает, что мантисса должна быть правильной дробью и иметь после запятой цифру, отличную от нуля, или, другими словами, если после запятой в мантиссе стоит не нуль, то число называется нормализованным. Так, число 15,5 в нормализованном виде (нормализованная мантисса) в форме с плавающей запятой будет выглядеть следующим образом: 0,155 · 102, т. е. нормализованная мантисса будет
Числа в форме с плавающей запятой имеют фиксированный формат и занимают в памяти компьютера четыре (32 бит) или восемь байт (64 бит). Если число занимает в памяти компьютера 32 разряда, то это число обычной точности, если 64 разряда, то это число двойной точности. При записи числа с плавающей запятой выделяются разряды для хранения знака мантиссы, знака порядка, мантиссы и порядка. Количество разрядов, которое отводится под порядок числа, определяет диапазон изменения чисел, а количество разрядов, отведенных для хранения мантиссы, – точность, с которой задается число.
При выполнении арифметических операций (сложение и вычитание) над числами, представленными в формате с плавающей запятой, реализуется следующий порядок действий (алгоритм) :
1) производится выравнивание порядков чисел, над которыми совершаются арифметические операции (порядок меньшего по модулю числа увеличивается до величины порядка большего по модулю числа, мантисса при этом уменьшается в такое же количество раз);
2) выполняются арифметические операции над мантиссами чисел;
3) производится нормализация полученного результата.
Поясним сказанное выше на примерах.