Представление информации в электронных вычислительных машинах
Хранение и обработка различных видов информации: цифровой (числовой), символьной, графической и звуковой. Изучение способов сжатия при хранении и передаче. Эквиваленты десятичных чисел в двоичной, восьмеричной и шестнадцатеричной системах счисления.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.06.2015 |
Размер файла | 93,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Представление информации в электронных вычислительных машинах
1. Общие положения
информация двоичный счисление
Современные ЭВМ предназначены для хранения и обработки различных видов информации: цифровой (числовой), символьной, графической и звуковой.
Основной формой представления информации является цифровая. Формы представления символьной, графической и звуковой информации являются вариантами цифровой формы представления. Указанные формы представления информации различаются способами обработки информации, включая способы сжатия при хранении и передаче.
2. Цифровая форма представления информации
Цифровая форма представления информации используется для сбора, хранения, передачи и обработки характеристик объектов и явлений, включая количественные. Основными аспектами обработки количественных характеристик информации в цифровой форме являются:
выбор системы счисления,
выбор способа представления отрицательных величин,
выбор формы представления для обработки данных в максимальном диапазоне с минимальными потерями при округлениях.
выбор алгоритмов операций обработки информации.
Все эти аспекты хорошо проработаны и еще до появления ЭВМ были получены эффективные решения почти всех указанных вопросов. Здесь идет речь о пересмотре и модификации этих решений с учетом особенностей обработки информации на основе современных электронных средств.
Кроме перечисленных аспектов цифровая обработка информации требует решения проблем проектирования и производства электронных средств обработки. Это вопросы разработки методов синтеза схем цифровой обработки данных, устройств управления схем цифровой обработки данных.
3. Системы счисления
3.1 Общие положения
Система счисления - это совокупность приемов и правил для записи чисел.
Система счисления должна обеспечивать возможность представления любого числа из заданного диапазона и простоту реализации заданного множества операций. При машинной обработке данных система счисления должна обеспечить и оптимальное отношение производительность/стоимость обработки данных.
Иногда от системы счисления требуют единственности представления числовых величин. Но в ЭВМ для организации контроля правильности выполнения операций или при структурировании данных часто используют избыточные коды, не удовлетворяющие этому требованию.
Непозиционные системы счисления
Наиболее простой системой счисления является система, в которой для обозначения одного предмета используется цифра в виде символа-палочки (единички), а для множества предметов - множество символов-палочек. Это система счисления "робинзонов". В вычислительной техники запись числа в этой системе называют унитарным кодом. В теоретической модели ЭВМ - "алгоритме (машине) Поста" в качестве рабочей системы счисления используют именно этот код. Причем машина Поста обладает функциональной полнотой, т.е. в ней можно задать любую процедуру числовой обработки. Унитарный код относится к классу непозиционных систем счисления. Значение числа в ней не зависит от позиций символов. Унитарный код в некоторых ЭВМ используется и для задания совокупности микроопераций, причем отдельные операции задаются единичными значениями в определенных позициях регистра микроопераций. Для использования в качестве основной системы счисления в ЭВМ унитарный код не подходит, т.к. не удовлетворяет требованию оптимальности соотношения производительность/стоимость.
Римская система счисления также относится к классу непозиционных систем счисления, но с исключениями. В отличие от унитарного кода, в ней для компактности записи и удобочитаемости используется множество символов: , V, X, L, С, и т.д., означающих, соответственно: 1, 5, 10, 50, 100 и т.д. Число 158 в римской системе обозначается как CLVIII. Исключением в римской системе счисления как непозиционной системе является правило расстановки символов по мере убывания их "значимости". Возможна перестановка позиций "соседних по значимости" символов, но при этом меняется обозначаемая ими величина. Например, сочетание символов XI - задает сумму значений символов (10+1=11), а сочетание символов IХ - их разность (-1+10=9).
Очевидно, что римская система счисления для выполнения арифметических операций мало пригодна.
Позиционные системы счисления
Другим классом систем счисления являются позиционные системы счисления. В этих системах счисления для записи (кодирования) количественных значений определяются множества символов (цифр), например: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Числовое значение записи в этой системе зависит не только от совокупности используемых цифр, но и от их взаимного расположения (разрядных позиций или просто разрядов).
Для позиционных систем счисления число символов, определенных для кодирования чисел, называется основанием системы счисления q.
Наименование позиционной системы счисления производится по значению основания системы счисления (десятичная - q=10, двоичная - q = 2). Любое число N в позиционной системе счисления можно представить в виде сокращенной записи полинома (записываются только коэффициенты степеней основания):
Например, в десятичной системе счисление запись числа N = 134 соответствует сокращенной формой представления полинома:
Здесь и далее, при необходимости указания позиционной системы счисления, использованной при кодировании числа, основание системы счисления указывается в виде нижнего индекса в скобках - .
Если значение числа превышает значение основания системы счисления, то запись является многоразрядной. При этом каждый разряд имеет вес, равный соответствующей степени основания системы счисления. В десятичной системе счисления веса разрядов (начиная с младших разрядов) принимают значения единиц, десятков, сотен и т.д. Названия числовых величин соответствуют значению цифр и весам разрядов. Например, число 134 читается как одна сотня, три десятка и 4 единицы или сокращенно - сто тридцать четыре.
Все вышеизложенное применимо и для дробных и для смешанных чисел (неправильных дробей), при этом веса разрядов дробной части являются отрицательными степенями основания системы счисления. Для десятичной системы счисления - это десятые, сотые и т.д. доли единицы.
Выбор системы счисления для машинной обработки цифровых данных
Из известных систем счисления наиболее подходящими для машинной обработки цифровых данных являются позиционные системы счисления. Вопросом выбора является основание позиционной системы счисления.
Критерием выбора является простота оборудования для хранения и обработки данных.
Оценка простоты оборудования хранения данных
Объем (сложность) оборудования для хранения многоразрядных чисел определяется сложностью оборудования для одного разряда, умноженной на количество разрядов для заданного диапазона обрабатываемых чисел N.
Количество разрядов R определяется выражением . Если предположить, что сложность разрядного оборудования пропорциональна основанию системы счисления, то сложность оборудования G определяется выражением:
Эта функция имеет минимум при значении .
Таким образом, с точки зрения минимизации оборудования для хранения чисел, следует выбирать между значениями и . Если учесть, что вычислительная техника строится на электронных элементах, изначально имеющих двоичную природу работы (есть сигнал, нет сигнала), то предпочтение следует отдавать двоичной системе счисления.
Оценка простоты оборудования обработки данных
Сложность оборудования для обработки данных зависит от сложности правил обработки. Если рассматривать только арифметические операции, то сложность оборудования можно оценить по количеству строк правил арифметических операций: таблиц сложения, умножения и т.д. Эти правила должны быть аппаратно реализованы в исполнительных устройствах и устройствах управления.
Число строк таких таблиц арифметических операций пропорционально квадрату основания системы счисления. Таким образом, двоичная позиционная система счисления наилучшим образом подходит для компьютерной обработки данных с точки зрения простоты схем обработки числовой информации.
3.2 Двоичная система счисления
Для двоичной системы счисления определены две цифры: ноль(0) и единица (1). Любое число большее 1 является многоразрядным и записывается в виде последовательности нулей и единиц. Например, десятичное число 134 в двоичной системе записывается как 10000110. Это сокращенная запись полинома . Значение этого полинома равно .
Пример числа, имеющего целую и дробную часть: 11001,010 Это сокращенная запись полинома: = 25,3125.
3.3 Смешанные системы счисления
Смешанными системами счисления называются системы, в которых цифры числа представлены в одной системе счисления, а все число в другой (с большим основанием). Примером может являться двоично-десятичная система счисления. В смешанной двоично-десятичной системе каждая цифра числа задана в двоичной системе:
0 - 0000 5 - 0101
1 - 0001 6 - 0110
2 - 0010 7 - 0111
3 - 0011 8 - 1000
4 - 0100 9 - 1001,
а все число, например 134 (в десятичной системе) - тремя тетрадами: 0001 0011 0100.
Двоично-десятичная система счисления широко используется в ЭВМ для представления десятичных чисел и их обработки (десятичная арифметика) с использование двоичных элементов хранения и обработки.
Кроме двоичной и двоично-десятичной систем счисления в машинах используются восьмеричная и шестнадцатеричная системы счисления.
В восьмеричной системе счисления в качестве разрядных цифр используют 8 первых цифр десятичной системы, а в шестнадцатеричной - 10 цифр десятичной системы дополняют шестью первыми буквами английского алфавита.
В табл. 1 приведены эквиваленты десятичных чисел в двоичной, восьмеричной и шестнадцатеричной системах счисления.
Таблица 1. Эквивалентность чисел
Десятичные числа |
Эквиваленты в системах счисления |
Десятичные числа |
Эквиваленты в системах счисления |
|||||
q=2 |
q=8 |
q=16 |
q=2 |
q=8 |
q=16 |
|||
0 |
0000 |
0 |
0 |
8 |
1000 |
10 |
8 |
|
1 |
0001 |
1 |
1 |
9 |
1001 |
11 |
9 |
|
2 |
0010 |
2 |
2 |
10 |
1010 |
12 |
A |
|
3 |
0011 |
3 |
3 |
11 |
1011 |
13 |
B |
|
4 |
0100 |
4 |
4 |
12 |
1100 |
14 |
C |
|
5 |
0101 |
5 |
5 |
13 |
1101 |
15 |
D |
|
6 |
0110 |
6 |
6 |
14 |
1110 |
16 |
E |
|
7 |
0111 |
7 |
7 |
15 |
1111 |
17 |
F |
Восьмеричная и шестнадцатеричная системы счисления используются в основном для ввода-вывода данных и отладки. В некоторых из этих случаев работать с двоичной информацией приходится и операторам, и программистам. И здесь возникают проблемы. Дело в том, что многоразрядные двоичные числа человеком плохо запоминаются. Человек привык к восприятию укрупненных форм информации. Восьмеричная и шестнадцатеричная системы являются укрупненными формами двоичной системы счисления.
Например, двоичное число 1101001110110100 довольно трудно запомнить. Но если цифры записи разбить (с младших разрядов) на тетрады - 1101 0011 1011 0100 - и каждую тетраду записать шестнадцатеричной цифрой, то в результате получаем последовательность - D3B4, которую легко запомнить.
3.4 Таблицы сложения и умножения в двоичной системе счисления
Арифметические операции в двоичной системе счисления подобны соответствующим действиям в десятичной системе счисления, но при этом используются более простые таблицы арифметических действий.
В табл.2 приведены таблицы истинности для сложения и умножения в двоичной системы счисления.
Таблица 2. Таблица истинности для основных арифметических операций
Сложение |
Умножение |
||||||
a |
b |
перенос |
a+b |
a |
b |
ab |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
0 |
1 |
0 |
1 |
0 |
1 |
0 |
|
1 |
0 |
0 |
1 |
1 |
0 |
0 |
|
1 |
1 |
1 |
0 |
1 |
1 |
1 |
3.5 Перевод чисел из одной системы счисления в другую
Перевод чисел из десятичной системы счисления в другую систему и обратно связан с операциями ввода/вывода данных. Имеется несколько способов перевода чисел из одной системы в другую. Одним из часто используемых является метод деления числа на основание целевой системы счисления для целой части и умножения для дробной части исходного числа. Естественно, что деление и умножение чисел производится в исходной системе счисления.
Перевод целых чисел или целой части неправильной дроби.
Метод деления на основание целевой системы счисления.
Представим исходное число в виде полинома степени p, где p - основание целевой системы счисления, а - полином в целевой системе счисления:
1)
Искомое изображение величины находится как совокупность разрядных цифр:
. 2)
Для нахождения (разряд за разрядом) разрядных цифр числа , разделим число в исходной системе счисления (равенство 1) на основание целевой системы счисления p. В результате этой операции получаем новое равенство:
3)
где:
- частное от деления исходного числа на основание целевой системы счисления p,
- остаток от деления исходного числа на основание целевой системы счисления p.
Из выражения 3 следует:
4)
и . 5)
Таким образом, младшая цифра числа в целевой системе счисления совпадает с остатком от деления числа на основание целевой системы счисления.
Значения остальных цифр числа (цифра за цифрой) можно найти, продолжая деление очередных частных на основание p. Деление продолжается, пока очередное частное не станет меньше основания целевой системы счисления.
Полученные цифры числа в новой системе счисления представлены в исходной системе счисления.
Если перевод производится в систему счисления с большим основанием, то требуется дополнительный перевод каждой цифры в целевую систему счисления.
Пример перевода десятичного числа 43(q = 10) в двоичную систему счисления.
43 |
2 |
||||||
b0 = 1 |
21 |
2 |
|||||
b1 = 1 |
10 |
2 |
|||||
b2 = 0 |
5 |
2 |
|||||
b3 = 1 |
2 |
2 |
|||||
b4 = 0 |
1 |
||||||
b5 = 1 |
|||||||
Пример обратного перевода двоичного числа в десятичную систему счисления.
Деление делается в двоичной системе счисления. Вначале основание целевой системы счисления 10 переводится в двоичную систему счисления:
Двоичное число делится на основание целевой системы счисления - . В результате деления получается частное - и остаток , равный младшей цифре числа в искомой системе счисления. Так как полученное частное - меньше основания (целевой системы счисления), то оно является старшей цифрой искомого кода.
Искомый код в двоично-десятичной системе приобретает вид: или, после перевода каждой цифры в десятичную систему счисления, - .
Перевод дробных чисел или дробной части неправильной дроби.
Метод последовательного умножения на основание системы счисления.
Представим исходную правильную дробь в виде полинома степени p, где p - основание, а - полином целевой системы счисления:
5)
Искомое изображение величины находится как совокупность разрядных цифр:
. 6)
Для нахождения (разряд за разрядом) разрядных цифр числа , умножим число в исходной системе счисления (равенство 1) на основание целевой системы счисления p. В результате этой операции получаем неправильную дробь, в которой целая часть b-1 p0 = b-1 будет равна первой старшей цифре дроби в целевой системе счисления:
7),
где : -целая часть неправильной дроби и первая цифра дробной части числа в целевой системе счисления.
Продолжая эту операцию над дробной частью () правой части равенства (7) можно цифра за цифрой вычислить значение последующих разрядов дроби.
Если перевод производится в систему счисления с большим основанием, то требуется отдельный перевод каждой цифры в целевую систему счисления.
Пример перевода правильной дроби в двоичную систему счисления.
Сдвиг переносов на 1 позицию |
Умножение дробной части на основание - . (Умножение производится в десятичной системе счисления.) |
|
0, |
,3125 2 |
|
0,0 |
,6250 2 |
|
0,01 |
,2500 2 |
|
0,010 |
,5000 2 |
|
0,0101 |
,0000 2 |
|
Результат |
Пример перевода числа 0,0101(2) в десятичную систему счисления
Сдвиг переносов на 4 позиции |
Умножение дробной части на основание - 10(10) = 1010(2) |
|
0, |
,0101 1010 = 0011,0010 |
|
0,0011 |
,0010 1010 = 0001,0100 |
|
0,0011 0001 |
,0100 1010 = 0010,1000 |
|
0,0011 0001 0010 |
,1000 1010 = 0101,0000 |
|
0.0011 0001 0010 0101 |
,0000 |
|
Результат = |
В общем случае, дробные числа переводятся из одной системы счисления в другую приближенно, так как дробная часть числа при последовательном умножении на основание целевой системы счисления может не принимать значения нуля. В таких случаях перевод продолжается до достижения заданной точности. Примером может служить перевод числа 0,3(10) в двоичную систему счисления.
Сдвиг переносов на 1 позицию |
Умножение дробной части на основание - . (Умножение производится в десятичной системе счисления.) |
|
0, |
,3 2 |
|
0,0 |
,6 2 |
|
0,01 |
,2 2 |
|
0,010 |
,4 2 |
|
0,0100 |
,8 2 |
|
0,01001 |
,6 2 и т.д. |
|
Результат |
Рассмотренные выше методы перевода чисел из одной позиционной системы счисления в другую позиционную систему счисления являются классическими, но не единственными. На практике могут применяться и другие методы, например, метод подбора суммы убывающих степеней основания целевой системы счисления, равной по величине числу в исходной системы счисления. Например, число 138(10), может быть представлено в виде суммы степеней числа 2: 138(10) = 128(10) + 8(10) + 2(10) = 12(7) + 02(6) + 02(5) + 02(4) + 12(3) + 02(2) + 12(1) + 02(6) = 10001010.
4. Способы представления чисел со знаком
4.1 Общие положения
Отрицательные числа, как и ноль, не входят в натуральный ряд чисел. Это числа не для счета предметов. Это величины, которые в дальнейшем должны вычитаться. Очевидно, по этой причине в систему счисления ввели знаки чисел: плюс (число будет прибавляться) и минус (число будет вычитаться). В вычислительной технике такое представление чисел называют: число плюс знак. Фиксируется абсолютное значение числа и, отдельно, знак. Это прямой код. Кроме прямого кода используются, по крайней мере, еще два: дополнительный и обратный.
Использование дополнительного или обратного кода позволяет арифметическое действие вычитание свести к двум действиям: инверсии знака (умножение на минус единицу) и сложению. Выполнение вычитания в прямом коде предполагает использование дополнительного оборудования. Если инвертировать знак вычитаемого, вычитание можно свести к сложению, а аппаратная реализация инверсии знака проще, чем реализация вычитания. Аппаратная реализация инверсии знака при вычитании использует инверсные выходы регистра вычитаемого и подачи "единичного" сигнала переноса на вход младшего разряда сумматора. Это аппаратное решение не увеличивает время выполнения вычитания по сравнению с временем выполнения операции сложения.
Поэтому все операции связанные с действием вычитания чисел производятся с применением инверсии, т.е. преобразования чисел в дополнительный или обратный коды.
При этом, исходные данные и результаты арифметических операций могут храниться в памяти как в прямом коде, так и в обратном или дополнительном кодах. Хранение данных в памяти непосредственно в дополнительном или в обратном кодах часто уменьшает количество преобразований данных при выполнении арифметических операций.
Таким образом, дополнительные или обратные коды используются:
как средство упрощения операции вычитания,
как дополнительные способы представления алгебраических чисел (чисел со знаком).
4.2 Дополнительный код
Кодирование чисел в дополнительном коде можно получить естественным путем при помощи операции вычитания (моделирования работы вычитающего счетчика). Для начала рассмотрим дополнительный код для десятичной системы счисления. За начальное состояние возьмем значение счетчика - 4, разрядность счетчика - 3:
Начальное состояние счетчика: 0 003 положительное число 3
после вычитания 1 0 002 положительное число 2
после вычитания 1 0 001 положительное число 1
после вычитания 1 0 000 нулевое значение счетчика
после вычитания 1 9 999 отрицательное число - минус 1; это и следующие значения рассматриваются как коды отрицательных чисел
после вычитания 1 9 998 отрицательное число - минус 2
после вычитания 1 9 997 отрицательное число - минус 3
и т.д.
Положительные числа от отрицательных отличаются значением старшего разряда. Если он равен 9. то число отрицательное, иначе - положительное.
Пример выполнения вычитания в дополнительном коде:
А = В - С.
где: В = 0 005, С = 0 003
Заменяем действие вычитание положительного числа на сложение с отрицательным числом: А = В + ( - С). Здесь по коду положительной величины С (0 003) находится код отрицательной величины ( - С = 9 997) и производится действие сложение:
0 005
+ 9 997
10 002
Единица переноса из старшего разряда (отделена вертикальной чертой) в данном случае просто отбрасывается.
Определение кода отрицательной величины по коду положительной величины (операция инверсии знака) производится по правилу: каждую цифру (включая знак) меняют на дополнение до 9: (0 9), (18), (27)….(9 0) и полученный результат увеличивают.
В десятичной системе счисления дополнительный код не симметричен по отношению к множествам положительных и отрицательных чисел, записываемых в регистр.
Двоичный дополнительный код более симметричен по отношению к множествам положительных и отрицательных чисел (отрицательных чисел записывается больше только на одно число).
Определение кода отрицательной величины по коду положительной величины (приписывание отрицательного знака) производится по правилу: каждую цифру числа (включая знак) меняют на противоположную (ноль на единицу, а единицу на ноль) и полученный результат увеличивают.
Два числа, одинаковых по абсолютной величине, но имеющих разные знаки, являются дополнительными в том смысле, что их сумма равна нулю.
Пример. Числа: А = 5(10)= 0.0101(2) и В = (-5(10))= 1011(2) являются дополнительными, т.к. их сумма равна нулю (перенос из старшего разряда отбрасывается):
0.0101
+ 1011
1| 0.0000.
Они содержат значащие цифры и знак (в примере знак отделен точкой).
Имеется и другая интерпретация дополнительного кода. Знаковый разряд рассматривается как обычный цифровой, но с отрицательным весом. У положительных чисел значение этого разряда равно нулю, а у отрицательного - минус единица в соответствующей (положительной) степени.
Так как 2n > , число всегда отрицательно, если его старшая (знаковая) цифра равна.
Подсчет значения чисел для предыдущего примера производится следующим образом:
А = 0.0101 = 100(2) + 1(2) = 4(10) + 1(10) = 5(10)
В = 1011 = (- 10000(2)) + 1000(2) + 10(2) +1(2) = (- 16(10)) +8(10)+2(10)+1(10) = (- 5(10)).
Такая интерпретация дополнительного кода позволяет проектировать более эффективные алгоритмы микропрограмм арифметических операций.
Асимметрия дополнительного кода
Рассмотрим диапазоны чисел со знаком в дополнительном коде, которые можно поместить в трехразрядный регистр:
Положительные |
Отрицательные |
|||||
0.00(2) |
+ 0(10) |
00(2) |
- 4(10) |
|||
0.01(2) |
+ 1(10) |
01(2) |
- 4(10)+1(10)= -3(10) |
|||
0.10(2) |
+ 2(10) |
10(2) |
- 4(10)+2(10)= -2(10) |
|||
0.11(2) |
+ 3(10) |
11(2) |
- 4(10)+2(10)+1(10)= -1(10) |
Формально, количество чисел со знаком «+» и «-» одинаково. Но нуль не имеет знака (в том смысле, что процедура изменения знака не меняет значение цифры как средства счета). Фактический диапазон положительных чисел от единицы до трех, а отрицательных - от единицы до четырех. Таким образом, число минус четыре (со знаком) использует для хранения только 3 разряда (00(2)), а плюс четыре - 4 разряда (0.100(2)). Поэтому при выполнении операции изменении знака числа (инверсии) может произойти переполнение регистра.
Модифицированный дополнительный код
Использование модифицированного дополнительного кода связано с проблемой переполнения разрядной сетки. Вычисления в процессоре "классической архитектуры" концептуально производятся параллельно по разрядам операндов и последовательно по операциям. Для большинства микропроцессоров параллельность обработки определяется размером операнда. Это байт (8 бит), слово (2 байта), двойное слово (4 байта) или учетверенное слово (8 байт). Количество байт бит ? параллельной обработки (ширина обработки) определяется разрядностью шин данных, регистров и устройств обработки.
Но в любом случае возможно получение результата операции или цепочки операций, превышающего ширину обработки. Это переполнение разрядов (переполнение разрядной сетки). В процессе работы возможно получение количества бит результата, превышающего ширину обработки. При этом возможно получение неверного результата из-за нехватки разрядов устройства обработки или регистров результата. Для контроля правильности выполнения операций необходим механизм фиксации переполнения.
Рассмотрим несколько примеров выполнения арифметических операций в дополнительном коде над числами А = 0.101(2) = 5(10) и В = 0.110(2) = 6(10).
1. С = А - В = А + (-В)
0.101 + 5(10)
+ 010 - 6(10)
111 - 1(10) нет переноса, нет переполнения, результат верен.
2. С = В - А = В + (-А)
0.110 + 6(10)
+ 011 - 5(10)
10.001 + 1(10) есть перенос, нет переполнения, результат верен.
3. С = А + В,
0.101 + 5(10)
+ 0.110 + 6(10)
011 - 3(10)), нет переноса, есть переполнение, результат неверен. (должно быть +11(10))
4. С = (-А) + (-В)
011 - 5(10)
+ 010 - 6(10)
10.101 + 5(10) , есть перенос, есть переполнение, результат неверен. (должно быть -11(10))
5. С =(-А) + (-D),
где D = 3(10) = 0.011(2)
011 - 5(10)
+ 101 - 3(10)
1000 - 8(10) есть перенос, переполнения нет, результат верен.
Из приведенных примеров видно что:
переполнение разрядной сетки (примеры 3 и 4) ведет к ошибке в результате,
переполнение не всегда совпадает с переносом из старшего разряда,
для выявления переполнения нужно также анализировать соотношение знаков исходных операндов.
Процедура выявления переполнения разрядной сетки намного упрощается при использовании модифицированного дополнительного кода.
Модифицированный дополнительный код получается из дополнительного простым дублированием знакового разряда. Причем, в памяти числа могут храниться в дополнительном коде и переводиться в модифицированный код непосредственно при пересылке на исполнительное устройство.
Приведенные выше примеры выполнения операций в модифицированном дополнительном коде выглядят так:
00.101 + 5(10)
+ 1010 - 6(10)
1111 - 1(10) нет переноса, нет переполнения.
2. 00.110 + 6(10)
+ 1011 - 5(10)
1 00.001 + 1(10) есть перенос, нет переполнения.
3. 00.101 + 5(10)
+ 00.110 + 6(10)
0011+11(10), нет переноса, есть переполнение.
4. 1011 - 5(10)
+ 1010 - 6(10)
110.101-11(10), есть перенос, есть переполнение.
5. 1011 - 5(10)
+ 1101 - 3(10)
11000 - 8(10) есть перенос, нет переполнения.
В дополнительном коде факт переполнения определяется по несовпадению цифр знака. При этом, (даже) в случае переполнения первая цифра знака указывает на верный знак результата, а вторая - на верную старшую цифру результата, не поместившуюся в разрядную сетку значащих цифр результата. Таким образом, правильный результат может быть сохранен для последующей обработки.
4.3 Обратный код
Использование обратного кода дает еще одну возможность замены арифметического действия вычитания сложением с инверсией вычитаемого.
Кодирование чисел в обратном коде можно также получить естественным путем при помощи операции вычитания (при моделировании работы вычитающего счетчика).
Для примера рассмотрим работу двоичного счетчика при вычитании, начиная со значения 2(10):
0.010 + 2(10)
0.001 + 1(10)
0.000 + 0(10) ноль
111 - это значение в обратном коде рассматривается как минус ноль (-0(10))
110-1(10)
101-2(10) и т.д.
В обратном коде определение кода отрицательной величины по коду положительной величины (приписывание отрицательного знака) производится по упрощенному правилу: каждую цифру числа (включая знак) меняют на противоположную. Так как во время счета при переходе счетчика через нулевое значение теряется одна единичка, для корректности вычислений в обратном коде требуется соответствующая компенсация. Для этой цели используется естественный перенос из старшего знакового разряда при переходе счетчика через нулевое значение.
Ниже представлены числа со знаком в обратном коде, которые можно поместить в трехразрядный регистр:
Положительные |
Отрицательные |
|||||
0.00(2) |
+ 0(10) |
00(2) |
- 3 |
|||
0.01(2) |
+ 1(10) |
01(2) |
- 2 |
|||
0.10(2) |
+ 2(10) |
10(2) |
- 1 |
|||
0.11(2) |
+ 3(10) |
11(2) |
- 0 |
Двоичный обратный код полностью симметричен по отношению к множеству положительных и отрицательных чисел. Примеры выполнения операции вычитания в обратном коде над числами А=2(10)=0.10(2) и В=1(10)=0.01(2)
1. С=А-В=А+(-В)
0.10+2(10)
+10-1(10)
10.00 - сложение
+ 1 - коррекция, сложение с единицей переноса
0.01 - результат 2(10)-1(10)=1(10).
2. С=В-А=В+(-А)
0.01+1(10)
+01-2(10)
10 результат 1(10)-2(10)=-1(10)
В примере (из меньшего вычитается большее) нет коррекции, но результат верен.
3. С=В-1-1=В+(-1)+(-1).
Пример эквивалентен примеру 2, но вычитание двух единиц производится в два этапа.
0.01+1(10)
+10-1(10)
11-0(10) результат первого вычитания
+10-1(10)
101 результат второго вычитания без коррекции
+ 1 коррекция, сложение с единицей переноса
10 результат 1(10)-2(10)=-1(10).
В приведенных примерах коррекция результата (сложение с единицей переноса) представлена в виде отдельного действия, но на практике коррекция совмещается со сложением. Просто используется суммирующее устройство с циклическим переносом с выхода старшего разряда на вход переносов младшего разряда.
Таким образом, обратный код отличается от дополнительного алгоритмом определения кода отрицательной величины по коду положительной величины и использованием сумматора с циклическим переносом, а реализация арифметических действий в обратном коде предполагает использование сумматора с циклическим переносом.
Для выявления переполнения разрядной сетки применяется модифицированный обратный код.
Модифицированный обратный код, как и дополнительный, получается простым дублированием знакового разряда.
Дополнительный и обратный коды считаются равноценными, но в реальных ЭВМ применяется преимущественно дополнительный код. В ЭВМ числа со знаком могут храниться в памяти в прямом, обратном или в дополнительном кодах, но выполнение арифметических операций, связанных с вычитанием, производится с использованием дополнительного или обратного кодов.
5. Формы представления числовых данных
5.1 Общие положения
ЭВМ работают с двумя форматами данных: формат переменной длины и формат фиксированной длины.
Форматы переменной длины - это строки байт или бит. В команде строки задаются начальным адресом элемента строки и длиной (количеством элементов).
Форматы фиксированной длины имеют конечное число размеров, измеряемых в байтах или в словах (короткий, удвоенный и т.д.). Это основные форматы числовых данных, представленных в двоичной системе счисления и обрабатываемых параллельно по разрядам. Размеры операндов фиксированной длины в командах задаются по умолчанию (кодом операции).
Для представления числовых данных в формате фиксированной длины в ЭВМ используют две формы: с фиксированной запятой (точкой) и с плавающей запятой (точкой). В математике этим формам соответствуют естественная и нормальная формы записи
В современных ЭВМ используются обе формы представления чисел.
5.2 Представление числовых данных с фиксированной запятой
Арифметика с фиксированной запятой является вспомогательной в сфере научно-технических расчетов и основной в информационных технологиях. Она используется для подсчета циклов, формирования адреса по компонентам, выполнения логических операций над числами и отдельными разрядами и т.д. Все это - область применения целых чисел. Таким образом, форма представления чисел с фиксированной запятой в настоящее время применяется для представления целых чисел со знаком, целых чисел без знака или набора бит.
При представлении числовых данных в форме с фиксированной запятой для хранения и обработки чисел используются регистры с жесткой разрядной сеткой, в которых определены знаковые разряды, разряды целой части числа и разряды дробной части числа. Для каждой разрядной сетки определен диапазон чисел, представимых в данном формате. Числа, меньшие веса младшего разряда регистра, представляются нулями во всех разрядах. Это машинный нуль.
Особое значение в формате чисел с фиксированной запятой имеет выбор места запятой в разрядной сетке. В специализированных системах здесь нет проблем. Например, в конторских счетах, ориентированных на подсчет денег, запятая отделяет два десятичных разряда (разряды копеек) от остальных (разрядов рублей).
В универсальных системах эту проблему решают, фиксируя место запятой или перед самым старшим разрядом или после самого младшего разряда. В первом случае, все разряды отводятся под дробную часть числа (дробная арифметика), во втором - под целую часть числа (целочисленная арифметика). В любом случае при использовании этих систем программист должен производить процедуру масштабирования исходных и выходных данных.
Масштабирование данных - это выбор масштабов для данных, чтобы все входные и выходные данные могли быть выражены в виде дробных или целых чисел. Например, величину 5,6 метров (смешанное число) можно представить как 560 сантиметров (целое число) или как 0,0056 километра (дробное число).
Выбор между целочисленными и дробными вычислениями зависит от специализации вычислений.
В первых ЭВМ из класса малых ЭВМ, например, "Урал 1" и "Минск 1", форма данных с фиксированной запятой была единственной, и все вычисления велись в арифметике с фиксированной запятой. В этих условиях преимущества были на стороне дробной арифметики, так как в ней возможна блокировка увеличения разрядности результатов операции умножения (за счет округления).
Рассмотрим примеры операции умножения дробных и целых чисел в форме с фиксированной запятой. Для простоты воспользуемся десятичной системой счисления.
Пример Умножение дробных чисел
0,35 0,35 = 0,1225 0,1200 = 0,12.
При умножении чисел их разрядность удваивается, что может привести к переполнению разрядной сетки. Но за счет округления можно представить результат умножения дробных чисел в пределах разрядной сетки исходных результатов.
Если исходные числа являются результатами измерений, то их точность определяется количеством разрядов их представления. Например, числа 0,35 и 0,350 отличаются тем, что первое число задано с точностью до двух, а второе - трех десятичных разрядов. Результаты любых арифметических операций не могут иметь большую точность, чем точность исходных данных. Следовательно, точность результат примера 1: 0,1225 определяется только первыми двумя цифрами после запятой и округление двух младших разрядов мало влияет на точность результата.
Пример 2. Умножение целых чисел.
35 35 = 1225 1200
Округление в данном случае не дает возможности уменьшить разрядную сетку результата, так как нули в младших разрядах для целых чисел являются обязательными цифрами, задающими порядок числа (весов разрядов).
5.3 Представление числовых данных с плавающей запятой
Представление числовых данных в форме с плавающей запятой является основным в научно-технических расчетах. В последнее время числа в форме с плавающей запятой широко применяются и в области трехмерной компьютерной графики. Это операции над векторными данными в форме с плавающей запятой.
Действия над числами в форме с плавающей запятой не требуют масштабирования данных. Это основное достоинство арифметики с плавающей запятой.
Рассмотрим ряд чисел, представленных в разных формах:
Число |
Естественная форма |
Нормальная форма |
|||||
Целая часть |
Дробная часть |
Мантисса |
Масштабный коэффициент |
Для основания системы счисления =10 |
|||
Значащие цифры мантиссы |
Порядок |
||||||
350 |
+ 350 |
,0 |
+ 0,35 |
10+3 |
+ 35 |
+ 3 |
|
-35 |
- 35 |
,00 |
- 0,35 |
10+2 |
- 35 |
+ 2 |
|
0,35 |
+ 0 |
,350 |
+ 0,35 |
100 |
+ 35 |
0 |
|
0,035 |
+ 0 |
,035 |
+ 0,35 |
10-1 |
+ 35 |
- 1 |
Здесь представлены четыре числа (три положительных и одно отрицательное) в естественной форме (левая колонка) и нормальной форме (центральная и правая колонки). Все числа имеют одинаковые последовательности значащих (отличных от нуля) цифр, но разные порядки (от сотен до сотых долей).
Естественная форма записи числа соответствует форме представления чисел с фиксированной запятой. Для такого представления важно место запятой. Для представления всех четырех чисел без масштабирования требуется шестиразрядный регистр (три разряда для целой части числа и три - для дробной).
Нормальная форма представляет эти числа в виде нормализованной дроби с "индивидуальным" масштабным коэффициентом.
Например: 350,0 = 0,35 103. В общем случае число А в нормальной форме записывается как:
А = m qn,
где:
m - мантисса - нормализованная дробь,
q - основание системы счисления,
n - порядок числа.
Нормальная форма представления соответствует форме представления чисел с плавающей запятой. Это полулогарифмическая форма представления чисел. Она предоставляет более широкий диапазон представления чисел при ограниченной разрядности регистров хранения.
Основание системы счисления (q) задается по умолчанию. Для большинства микропроцессоров q=2.
В случае задания основания системы счисления по умолчанию, число 350,0 может быть записано в виде пары чисел: 35 и 3. Первое число - это запись значащих чисел, второе число (порядок числа) можно интерпретировать, как координату запятой. В данном случае место запятой - после третьей позиции цифр числа. Отсюда вытекает и название формы представления чисел - с плавающей запятой.
Порядок числа может быть как положительным, так и отрицательным. Для чисел больших единицы - порядок положительный, для дробных чисел - отрицательный.
Для упрощения обработки чисел в форме с плавающей запятой используют "сдвинутый" порядок - характеристику. Характеристика - это порядок "сдвинутый" в область положительных значений. Для получения характеристики из порядка в старший разряд порядка прибавляют.
Например, пусть для записи порядка используются три двоичных разряда. С учетом знака в эти разряды можно записать числа в диапазоне от минус 4 до плюс 3:
Порядок |
Порядок в дополнительном коде |
Характеристика (сдвинутый порядок) |
|
-4(10) |
1,00(2) |
000(2) |
|
-3(10) |
1,01(2) |
001(2) |
|
-2(10) |
1,10(2) |
010(2) |
|
-1(10) |
1,11(2) |
011(2) |
|
0(10) |
0,00(2) |
100(2) |
|
+1(10) |
0,01(2) |
101(2) |
|
+2(10) |
0,10(2) |
110(2) |
|
+3(10) |
0,11(2) |
111(2) |
В дополнительном коде характеристика отличается от порядка тем, что у нее изменен знаковый разряд. Основное преимущество этой кодировки заключается в том, что в ней проще определять соотношение порядков обрабатываемых чисел.
Таким образом, для представления чисел в форме с плавающей запятой требуется регистр с тремя полями для записи знака числа (знака мантиссы), мантиссы и характеристики (порядка со знаком).
Как правило, в ЭВМ отрицательные значения чисел (мантиссы) задаются в прямом коде.
Мантисса - это нормализованная дробь.
По классическому определению, нормализованная дробь - это дробь, у которой первая цифра после запятой отлична от нуля, т.е., для нормализованной дроби должно выполняться условие: m<1.
Для двоичной системы счисления нормализованная дробь имеет вид 0,1 а2 а3 и т.д., то есть |m|>1/2.
Первые ЭВМ использовали именно такие мантиссы. Но, при такой записи, целые числа представлялись с погрешностью. Например, число 1 представлялось в виде мантиссы: 0,111111111…11 с нулевым порядком.
При этом произведение 22 после переводов исходных чисел из десятичной системы счисления в двоичную и результата - обратно в десятичную ЭВМ выдавала в виде дробного числа: 3,99999.
В современных ЭВМ, например в РС Intel и PDP-11, мантиссу определяют как неправильную дробь, целая часть которой равна 1, т.е. 2>m ?.
В этом случае целые числа задаются без погрешностей. Но дело тут не столько в свойствах систем счисления, сколько в методах перевода чисел. Например, число 1 можно задавать без погрешности и при дробной мантиссе: 1 = 0,1(2) 21.
В зависимости от требуемой точности представления чисел в ЭВМ используется ряд форматов для хранения и обработки чисел форме с плавающей запятой.
Например, в МП Intel предусмотрены три формата: короткий формат (обычной точности), формат двойной точности и расширенный (вещественный) формат (real).
Два первых формата используются только для хранения данных в памяти. Перед вычислениями числа из этих форматов переводятся в вещественный формат.
Числа с плавающей запятой в формате обычной и двойной точности при загрузке в модуль обработки автоматически преобразуются в формат расширенной точности. Для исключения потери точности в длинных цепочках вычислений предусмотрена возможность хранения промежуточных результатов вычислений в памяти и в формате расширенной точности.
Короткий формат: знак числа (мантиссы) - 1 бит, характеристика (сдвинутый порядок): - 1 байт и мантисса: - 3 байта. При хранении в памяти первую значащую цифру мантиссы (в старых ЭВМ - единицу после запятой или, в современных ЭВМ, - единицу до запятой) не записывают (задают по умолчанию). В результате этого, короткий формат чисел с плавающей запятой при хранении содержит 32 бита (4 байта).
Формат двойной точности: знак числа (мантиссы) - 1 бит, характеристика (сдвинутый порядок): - 11 бит и мантисса: - 53 бита (включая первую скрытую цифру). Всего, с учетом скрытой цифры мантиссы, - 64 бита (8 байт).
Расширенный (вещественный) формат: знак числа (мантиссы) - 1 бит, характеристика (сдвинутый порядок) - 15 бит, мантисса - 64 бит (8 байт), включая первую цифру мантиссы. Всего - 80 бит (10 байт).
Список литературы
1. Майоров С.А., Новиков Г.И. Структура электронных вычислительных машин. Л.: Машиностроение, 1979. 384 с.
2. Каган Б.М. Электронные вычислительные машины и системы: Учеб. пособие для вузов. - 2-е изд. перераб. и доп. - М.: Энергоатомиздат, 1985. - 552с., ил.
3. Организация ЭВМ. 5-е изд./ К. Хамахер, З. Заки. - СПб.: Питер; Киев: Издательская группа BHV, 2003. -848 с.: ил. - (Серия "Классика computer science").
4. Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем. Учебник для вузов. - СПб.: Питер. 2004. - 668 с.: ил.
Размещено на Allbest.ru
Подобные документы
Порождение целых чисел в позиционных системах счисления. Почему мы пользуемся десятичной системой, а компьютеры - двоичной (восьмеричной и шестнадцатеричной)? Перевод чисел из одной системы в другую. Математические действия в различных системах счисления.
конспект произведения [971,1 K], добавлен 31.05.2009Характеристика методов представления заданных чисел в двоичной, шестнадцатеричной, восьмеричной системе счисления. Представление указанного числа в четырехбайтовом IEEE формате. Разработка алгоритма обработки одномерных и двумерных числовых массивов.
контрольная работа [138,9 K], добавлен 05.06.2010Формы и системы представления информации для ее машинной обработки. Аналоговая и дискретная информация, представление числовой, графической и символьной информации в компьютерных системах. Понятие и особенности файловых систем, их классификация и задачи.
реферат [170,3 K], добавлен 14.11.2013Представление числовой информации с помощью систем счисления. Кодирование символьной, текстовой, числовой и графической информации. Устройство жесткого диска; дисковод компакт-дисков CD-ROM. Использование главного меню Windows; языки программирования.
контрольная работа [62,9 K], добавлен 16.03.2015Представление информации в двоичной системе. Необходимость кодирования в программировании. Кодирование графической информации, чисел, текста, звука. Разница между кодированием и шифрованием. Двоичное кодирование символьной (текстовой) информации.
реферат [31,7 K], добавлен 27.03.2010Кодирование символьной и числовой информации. Основные системы счисления. Двоичная система счисления. Устройства вывода информации. Правила выполнения арифметических операций. Логические основы построения, функциональные узлы ЭВМ. Синтез логических схем.
презентация [1,2 M], добавлен 08.11.2016Анализ двоичной, восьмеричной и шестнадцатеричной систем счисления и перевода десятичных чисел. Форматы хранения чисел с плавающей точкой. Программа для преобразования массива констант в формат числа с плавающей точкой на эмуляторе микро-ЭВМ СМ-1800.
курсовая работа [266,9 K], добавлен 24.12.2013Общие подходы к компьютерному представлению графической и звуковой информации. Растровая и векторная графика: характеристика, отличительные особенности, условия использования. Представление цветов в компьютере, существующие модели и их сравнение.
презентация [2,3 M], добавлен 02.03.2016Система счисления как способ записи информации с помощью заданного набора цифр. История развития различных систем счисления. Позиционные и непозиционные системы. Вавилонская, иероглифическая, римская система счисления. Система счисления майя и ацтеков.
презентация [3,2 M], добавлен 05.05.2012Обработка информации и вычислений в вычислительной машине. Непозиционные и позиционные системы счисления. Примеры перевода десятичного целого и дробного числа в двоичную систему счисления. Десятично-шестнадцатеричное и обратное преобразование чисел.
контрольная работа [41,2 K], добавлен 21.08.2010