Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ Информатика ЛР.doc
Скачиваний:
12
Добавлен:
27.08.2019
Размер:
3.47 Mб
Скачать

Представление данных в памяти эвм Основные положения

Любая информация (числа, команды, записи и т.п.) представляется в ЭВМ в виде двоичных кодов фиксированной или переменной длины. Отдельные элементы двоичного кода, имеющие значение 0 или 1, называют разрядами или битами. Двоичный код, состоящий из 8 разрядов, носит название байта. Для записи чисел также используют 32-разрядный формат (машинное слово), 16-разрядный формат (полуслово) и 64-разрядный формат (двойное слово).

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

Прямой код

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

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

Функция кодирования двоичных чисел (в том числе целых чисел и смешанных дробей) в прямом коде имеет вид:

, (4)

где n – номер знакового разряда. В частности, при кодировании правильных двоичных дробей (то есть чисел -1 < A < 1), n = 0 и функция кодирования принимает вид:

(5)

Величина числа A в прямом коде определяется по следующей формуле:

, (6)

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

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

(n + 1)-разрядный прямой код (n цифровых разрядов и один знаковый) позволяет представлять целые числа в диапазоне и правильные двоичные дроби в диапазоне .

Примеры представления чисел в прямом коде приведены в табл. 3.

Таблица 3

Представление чисел в прямом коде

Десятичный код

Двоичный код

8-разрядный прямой код

0

0

4

10

-5

-16

9/16

-9/16

105/128

-5/128

0

0

100

1010

-101

-10000

0.1001

-0.1001

0.1101001

-0.0000101

00000000 – положительный ноль

10000000 – отрицательный ноль

00000100

00001010

10000101

10010000

0.1001000

1.1001000

0.1101001

1.0000101

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

Однако у прямого кода есть два недостатка:

  1. В прямом коде есть два варианта записи числа 0 (например, 00000000 и 10000000 в восьмиразрядном представлении).

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

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

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