Исследование двоичных форм представления данных в ЭВМ типовыми программными средствами

Автор работы: Пользователь скрыл имя, 09 Декабря 2014 в 22:59, лабораторная работа

Описание работы

1 Цель работы
Тестирование арифметико-логического блока процессора на уровне двоичных форм представления данных типовыми программными средствами ЭВМ.

Файлы: 1 файл

Vanya_skinul.docx

— 472.09 Кб (Скачать файл)

 

2Арифметический тип данных

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

Техническая сложность реализации заключается в отсутствии возможности реализации операции вычитание (нет поддержки операции займа). В ЭВМ в целях упрощения выполнения арифметических операций применяют специальные коды для представления чисел.

Для всех систем счисления, кроме десятичной, имеется прямой код числа, применяемый для реализации операций над знаковыми числами. При записи числа в прямом коде старший разряд равен 0, если число положительное, и 1, если число отрицательное. Однако прямой код имеет и свои недостатки:

  • «0» может являться как положительным, так и отрицательным;
  • прямой код не позволяет реализовать операции вычитания.

Решение проблемы с вычитанием было найдено в замене вычитания сложением:

 

(с – y) –  дополнение, p – разрядность числа.

Помимо прямого кода числа используется также обратный и дополнительный коды. Обратный код дополняет число до 2p–1 и обозначается как:

 

Рассмотрим следующее выражение:

 

[(2p – 1) – y] – обратный код;

 – дополнительный  код.

 

2.2 Прямой код

Прямой код – это представление числа в двоичной системе счисления, при котором первый (старший) разряд отводится под знак числа. Если число положительное, то в левый разряд записывается 0; если число отрицательное, то в левый разряд записывается 1.

 Таким  образом, в двоичной системе счисления, используя прямой код, в восьмиразрядной  ячейке (байте) можно записать семиразрядное  число. Например:

0 00011010 - положительное  число

1 00011010 –  отрицательное число

 Количество  значений, которые можно поместить  в семиразрядной ячейке со  знаком в дополнительном разряде  равно 256. Это совпадает с количеством  значений, которые можно поместить  в восьмиразрядную ячейку без  указания знака. Однако диапазон  значений уже другой, ему принадлежат  значения от -128 до 127 включительно (при  переводе в десятичную систему  счисления).

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

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

 

2.2.1 Операция сложения положительных чисел, представленных в прямом коде

Прямой код числа «5»: 0 000 0101

Прямой код числа «7»: 0 000 0111

Два исходных числа сравниваются. В разряд знака результата записывается знак большего исходного числа.

Если числа имеют разные знаки, то вместо операции сложения используется операция вычитания из большего по модулю значения меньшего. При этом первый (знаковый) разряд в операции не участвует.

 

000 0111


000 0101

-------------

000 1100

После выполнения операции учитывается первый разряд. Результат операции 0 000 1100,  («12» в десятеричной системе).

 

2.3 Обратный код

В дополнительном коде, также как и прямом, первый разряд отводится для представления знака числа. Прямой код используется для представления положительных чисел, а дополнительный – для представления отрицательных. Поэтому, если в первом разряде находится 1, то мы имеем дело с дополнительным кодом и с отрицательным числом.

 Все остальные  разряды числа в дополнительном  коде сначала инвертируются (получение обратного кода), т.е. заменяются противоположными (0 на 1, а 1 на 0). Например, если 1 0001100 – это прямой код числа, то при формировании его дополнительного кода, сначала надо заменить нули на единицы, а единицы на нули, кроме первого разряда. Получаем 1 1110011. Но это еще не окончательный вид дополнительного кода числа. Далее следует прибавить единицу к получившемуся инверсией числу:

 

1 1110011 + 1 = 1 1110100

 

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

Причина, по которой используется дополнительный код числа для представления отрицательных чисел, связана с тем, что так проще выполнять математические операции. Например, имеется два числа, представленных в прямом коде. Одно число положительное, другое – отрицательное и эти числа нужно сложить. Однако просто сложить их нельзя. Сначала компьютер должен определить, что это за числа. Выяснив, что одно число отрицательное, ему следует заменить операцию сложения операцией вычитания. Потом, машина должна определить, какое число больше по модулю, чтобы выяснить знак результата и определиться с тем, что из чего вычитать. В итоге, получается сложный алгоритм. Эффективнее складывать числа, если отрицательные преобразованы в дополнительный код.

2.3.1 Операция сложения положительного числа и отрицательного числа, представленного в дополнительном коде

Прямой код числа «5»: 0 000 0101

Прямой код числа «-7»: 1 000 0111

Формирование дополнительного кода числа «-7».

Прямой код: 1 000 0111

Инверсия (обратный код): 1 111 1000

Добавление единицы (дополнительный код): 1 111 1001

Операция сложения:

0 000 0101

+ 1 111 1001

  --------------

  1 111 1110

 

Проверка результата путем преобразования к прямому коду.

Дополнительный код: 1 111 1110

Вычитание единицы: 1 111 1101

Инверсия: 1 000 0010 («-2» в десятеричной системе).

3 Сложение и вычитание чисел с плавающей запятой

Спецификой представления числа с плавающей запятой является разделение его на две компоненты: ax – порядок числа;fx – мантисса, значащая часть (представляется в дробном виде).

 

Пример: 55,71 = 5,571*10-1, где 5,571 – мантисса, 10-1 – порядок.

При кодировании отрицательного числа знак «–» кодируется единицей, которая ставится непосредственно перед числом, знак «+» – нулем. При использовании формата с плавающей точкой пользуются понятием нормализованного представления чисел. Нормализованным числом называется число, мантисса которого удовлетворяет следующим неравенствам:

 

Пример:

0,0056 = 0,56*10-2;

0,001 = 0,1*10-2

 

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

 

Рисунок 1 – устройство для сложения и вычитания чисел с плавающей запятой

 

4 Логический тип данных

Логический тип данных используется в алгоритмах, применяется для логических операций.

Логические функции ИЛИ-НЕ и И-НЕ образуются как отрицание функций ИЛИ и И.

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

Рисунок 2 – RS-триггер на ЛЭ «ИЛИ-НЕ»

 

Для анализа и синтеза элементов и устройств ЭВМ широкое применение нашла булева алгебра, названная в честь английского математика Джорджа Буля. Теоретико-множественный вид данной алгебры выглядит следующим образом:

K=<B,

,
, ¬>,

где  B = {0, 1} – исходное числовое множество с допустимыми операциями , , ¬ (логические сложение, умножение и отрицание).

 

Булева алгебра построена на следующих аксиомах:

  1. Для любых x, y B удовлетворяются отношения x y=z1 B и

x y=z2 B.

  1. В множестве В есть такие элементы 0 и 1: для всякого x B x 0=x, x 1=x.
  2. Для всех x, y, z B, справедливы следующие свойства дистрибутивности:

(x

y)
z=(x
z)
(y
z)

  1. Для всякого x B имеется его дополнение (отрицание) ¬x B – такое, что x ¬x=1, x ¬x=0.

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

Логическая функция – это логическое выражение, составленное из Булевых логических переменных. Пример логической функции:

f(x1,x2,x3)= (x1

x2)
¬x3

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

Таблица 3 – Таблица истинности логической функции f(x1,x2,x3)

x1

x2

x3

x1

x2

¬x3

(x1

x2)
¬x3

0

0

0

0

1

0

0

0

1

0

0

0

0

1

0

1

1

1

0

1

1

1

0

0

1

0

0

1

1

1

1

0

1

1

0

0

1

1

0

1

1

1

1

1

1

1

0

0


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

совершенная дизъюнктивная нормальная форма (СДНФ) – дизъюнкция элементарных логических произведений всех переменных, взятых с учетом отрицаний, на которых функция принимает значение «1»:

 

Совершенная конъюнктивная нормальная форма (СКНФ) – конъюнкция элементарных дизъюнкций всех переменных, дающих «0»:

 

 

5 Текстовый тип данных

Применяется для хранения любой символьной информации. Большое применение нашел в сети Интернет, где распространение получила одна из его разновидностей – гипертекст. С помощью языков разметки гипертекста (XML, HTML, PHP и пр.) информация предоставляется удаленному пользователю в удобном виде.

Часто текстовые данные понимаются в более узком смысле — как текст на каких-либо языках (формальных или естественных), который может быть прочитан и понят человеком.

Текстовому формату противопоставляются «двоичные данные», информация в которых закодирована произвольным образом, не рассчитанном на восприятие человеком.

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

Основная цель применения текстовых данных —независимость от отдельных программ, требующих собственного кодирования или форматирования и несовместимых с другими программами. Текстовые файлы (файлы в текстовом формате) могут быть открыты, прочитаны и отредактированы в любых текстовых редакторах,

Текстовый формат часто используются для представления данных, которые сами не являются чисто текстовыми. В этом случае другие форматы данных «надстраиваются» над простым текстом, для чего их управляющие конструкции выражаются посредством печатных слов и знаков препинания.

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

В качестве примера ниже приводится часть исходного кода программы, переведенного в шестнадцатеричный вид.

Рисунок 3 –часть исходного кода программы, в шестнадцатеричном виде

 

6Методика выполнения работы

При написании программы для тестирования арифметико-логического блока процессора я использовал язык высокого уровня С#.

Интерфейс программы представляет собойвывод данных программы на экран для ведения диалога с пользователем. Здесь добавить блок-схему программы (диалог с пользователем, возможные ветви – в общем виде) Пользователю предлагается ввести два десятичных числа для выполнения операции двоичного сложения, вычитания, умножения. Результат представляется пользователю для его удобства в шестнадцатеричном виде. Операции с логическим типом данных выполняются после ввода пользователем значений двух операндов (“true” или “false”). На экран выводятся результаты трех базовых логических операций («И», «ИЛИ», «НЕ»). Блок операций с текстовым типом данных включает в себя: перевод введенного текста в шестнадцатеричный вид, поиск указанного слова во введенном ранее тексте.

Информация о работе Исследование двоичных форм представления данных в ЭВМ типовыми программными средствами