Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций 230100.doc
Скачиваний:
310
Добавлен:
18.12.2018
Размер:
5.39 Mб
Скачать

Лекция №4.Представление числовой информации в цифровых автоматах.

Вопросы:

1.Общие принципы представления информации.

2.Прямой, обратный и дополнительные коды.

3.Смещенный код и код Грея.

4.Погрешности представления числовой информации в ЭВМ.

Общие принципы представления информации.

Информация в памяти ЭВМ записывается в форме цифрового двоичного кода. С этой целью ЭВМ содержит большое количество ячеек памяти и регистров (от лат. regestum — внесенное, записанное) для хранения двоичной информации. Большинство этих ячеек имеет одинаковую длину n-, т. е. они используются для хранения бит двоичной информации (бит — один двоичный разряд). Информация, хранимая в такой ячейке, называется словом. Двойное слово, состоящее из 2 байт, представлено на рис. 4.1

16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

Старший бит

0

1

1

0

1

1

1

0

0

1

1

0

1

1

0

1

Младший бит

Байт

Байт

Слово

Рис 4.1 Бит, байт и слово.

Ячейки памяти и регистры состоят из элементов памяти. Каждый из таких электрических элементов может находиться в одном из двух устойчивых состояний: конденсатор заряжен или разряжен, транзистор находится в проводящем или непроводящем состоянии, специальный полупроводниковый материал имеет высокое или низкое удельное сопротивление и т. п. Одно из таких физических состояний создает высокий уровень выходного напряжения элемента памяти, а другое — низкий. Обычно это электрические напряжения порядка 4—5 В и 0 В соответственно, причем первое обычно принимается за двоичную единицу, а второе — за двоичный ноль (возможно и обратное кодирование).

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

В вычислительных машинах применяются две формы представления двоичных чисел.

1. Естественная форма, или форма с фиксированной запятой (точкой);

2. Нормальная форма, или форма с плавающей запятой (точкой).

Нормальная форма представления является основной в современных ЭВМ.

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

Знак

2n-1

21

20

n+1

2-1

2-2

2-r

r

,

Рис 4.3 Разрядная сетка для формы с фиксированной запятой Диапазон представления чисел по модулю для такой формы:

2-r≤ |N| ≤2n-2-r (4.1)

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

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

В общем случае число в форме с плавающей запятой может быть представлено в виде:

N=±Mp, (4.2)

где М — мантисса числа (|М|<1);

s — порядок числа (s — целое число);

p- основание системы счисления

Пример:

0,0007610=0,76*10-3

0,000112=0,11*2-11(-3)

Используется нормализованное число одинарной или двойной точности.

Нормализованное число одинарной точности представленное в фор­мате с плавающей запятой записывается в память ЭВМ следующим образом.

В 16-ом бите первого слова записывается знак числа (0-«+»; 1-«-»);

Число мантиссы занимает разряды с 15 по 7. Разряд 6 соответствует знаку порядка (0-«+>>; 1 -«-»), а оставшиеся 5 разрядов соответствуют зна­чению

числа порядка. Например, число +0,110010111x2-3 в памяти машины расположено следующим образом:

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

1

1

0

0

1

0

1

1

1

1

0

0

0

1

1

Число мантиссы Число порядка

16 15 7 6

Знак мантиссы Знак порядка

Рис.4.3. Разрядная сетка для формы с плавающей запятой

Нормализованное число двойной точности записывается в четыре слова памяти и отличается от представления чисел одинарной точности тем, что продолжение мантиссы размещается в следующих за первым трех по­следовательных словах памяти:

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

Введение термина “плавающая запятая” объясняется тем, что фактическое положение запятой в изображении числа корректируется всякий раз после выполнения операций, т.е. запятая в изображении числа плавает.

Прямой, обратный, дополнительный и модифицированный коды.

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

Целые числа без знака обычно занимают в памяти компьютера один или два байта.

В однобайтовом формате принимают значения от 000000002 до 111111112 - В двух­байтовом формате — от 00000000 000000002 до 11111111 111111112

Примеры:

а) число 7210 = 10010002 в однобайтовом формате:

Номера разрядов 76543210

Биты числа 01001000

б) это же число в двухбайтовом формате:

Номера разрядов 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Биты числа 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0

в) число 65535 в двухбайтовом формате:

Номера разрядов 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Биты числа 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0

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

Прямой код. Прямой n-разрядный двоичный код со знаком отличается от двоичного кода без знака тем, что в нем отводится один, как правило, самый старший разряд для знака, а оставшиеся п-1 разрядов — для значащих цифр. Значение знакового разряда равно 0 для чисел А2>0, и 1 — для чисел А2<0

Примеры:

а) Число 110 = 12 Число 12710=11111112

00000001 знак числа «+» 01111111 знак числа «+»

б) Прямой код числа - 12 Прямой код числа - 127

10000001 знак числа «-» 11111111 знак числа «-»

Для прямого кода справедливо следующее соотношение:

, (4.3)

где, n - разрядность кода; азн — значение знакового разряда.

Например, десятичная запись числа, представленного в прямом коде как 1101, бу­дет иметь вид:

A10 = (-1)1[1x20 + 0x21 + 1x22] = -5

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

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

Например, для 8-разрядного машинного слова со знаком :

Число: 1 Число: 127

Код модуля числа: 00000001 Код модуля числа: 01111111

Обратный код числа: 11111110 Обратный код числа: 10000000

Для обратного кода справедливо следующее соотношение:

(4.4)

0,- для положительных чисел

где азн =

1, - для отрицательных чисел

п — разрядность машинного слова.

Например, десятичная запись отрицательного числа, представленного в обратном коде как 1010, будет иметь вид:

A10 = 1x(-23 + 1) + [0x20 + 1x21 + 0x22] = -7 + 2= -5

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

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

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

Допустим, вычислительная машина, которая оперирует с двухразрядными, десятичными числами, должна сложить два числа;

Х1 = 84 и Х2 = -32. Заменим код отрицательного слагаемого Х2 его дополнением до 100, так чтобы [Х2]доп = 100+ Х2 = 68.

Сложив числа X1 + [Х2]доп, получим: Y= X1 + [Х2]доп = 84 + 68 = 152.

Учитывая, что вычисления проводятся на устройстве с двумя десятичными разря­дами, конечный результат будет равен 52. Равенство полученного результата истинному значению объясняется тем, что при формировании дополнительного кода к Х2 мы при­бавляли 100, а затем из результата вычитали 100 отбрасыванием старшего разряда:

Y =X1 + [Х2]доп - 100 =Х1 + [Х2 + 100] - 100 = 84 + [-32 +100] - 100 = 52.

Операция вычитания 100 заключается в том, что не учитывается код третьего деся­тичного разряда. Таким образом, дополнением М n-разрядного целого числа К называют разность

M=pn-k, (4.5)

где p – основание системы счисления

В двоичной системе дополнения цифр до 1 соответствуют их инверсным значениям (дополнение 0 равно 1, а дополнение 1 — 0).

Правило получения дополнения двоичных чисел:

1. Получить инверсию заданного числа (все его 0 заменить на 1),

0 000 0010 1100 0101 число 1111110100111010 инверсия числа

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

1 111 1101 0011 1010 инверсия числа

1 111 1101 0011 1011 дополнительный код числа

Проверим правильность перевода:

1 111 1111 1111 1111 переносы

+ 0 000 0010 1100 0101 число

1 111 1101 0011 1011 дополнительный код числа

10 000 0000 0000 0000 0

Так как перенос из старшего разряда не учитывается, то результат суммирования равен 0, что подтверждает правильность преобразования.

Старший бит дополнительного кода двоичных чисел выполняет функцию знака числа, т. е. равен 0 для положительных чисел и 1 — для их дополнений (отрицательных чисел).

При этом положительные числа в дополнительном коде изображаются так же как и в прямом, — двоичными кодами с цифрой 0 в знаковом разряде.

Для положительных чисел азн = 0 и представление числа полностью совпадает с представлением в прямом и дополнительном кодах. 0101 = 1x20 + 1x22 = 5

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

Соотношение для дополнительного кода:

, (4.6)

0, для положительных чисел

где aзн=

1, для отрицательных чисел;

n-разрядность машинного слова

Например, десятичная запись отрицательного числа, представленного в дополнительном коде как 1011 , будет иметь вид:

А10 = lx (-23) + [1х2° + 1х21 + 0х22] = -8 + 3 = -5

Смещенный код и код Грея.

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

записываются последовательно все возможные кодовые комбинации в обычной двоичной систе­ме счисления. Затем кодовая комбинация с единицей в старшем разряде, имеющая значе­ние 2n-1выбирается для представления числа 0. Все последующие комбинации с едини­цей в старшем разряде будут представлять числа 1, 2, 3,... соответственно, а предыдущие комбинации в обратном порядке — числа — 1, —2, —3…Двойчный код с избытком для 3-и 4-разрядных сеток представлен в таблице 4.1, 4.2.

Табл. 4.1

Номер

Код с

Десятичное

кодовой

избытком 4

значение

комбинации

7

111

3

6

110

2

5

101

1

4

100

0

3

011

-1

2

010

-2

1

001

-3

0

000

-4

Табл. 4.2

Номер кодовой комбина­ции

Код с избытком 8

Десятич­ное зна­чение

15

1111

7

14

1110

6

13

1101

5

12

1100

4

11

1011

3

10

1010

2

9

1001

1

8

1000

0

7

0111

-1

6

0110

-2

5

0101

-3

4

0100

-4

3

0011

-5

2

0010

-6

1

0001

-7

0

0000

-8

Так, числа 3 и — 3 в формате со смещением для 3-разрядной сетки будут иметь представление 111 и 001 соответственно, в формате со смещением для 4-разрядной сетки 1011 и 0101 соответственно.

Нетрудно заметить, что различие между двоичным кодом с избытком и двоичным дополнительным кодом состоит в противоположности значений знаковых битов, Разность значений кодовых комбинаций в обычном двоичном коде и двоичном коде с избытком для 3-й 4-разрядных сеток равна соответственно 4 и 8.

Например, кодовые комбинации 111 и 001 в обычном двоичном коде имеют значе­ния 7 и 1, а в двоичном коде с избытком: 3 и —3 соответственно. Таким образом, разность_ значений кодовых комбинаций в обычном двоичном коде и двоичном коде с избытком

7-3 = 4 и 1-(-3) = 4.

Для 4-разрядной сетки кодовые комбинации 1011 и 0101 в обычном двоичном коде имеют значения 11 и 5 соответственно а в двоичном коде с избытком: 3 и - 3. Таким образом,

11-3 = 8 и 5-(-3) = 8.

В связи с этим смещенный код для 3-разрядной сетки называют двоичным кодом с избытком 4 для 4-разрядной — с избытком 8.

Смещенный код можно создать для любого значения n-разрядности сетки. При этом он будет называться двоичным кодом с избытком 2n-1.

Как было отмечено выше, смещенный код используется для упрощения операций над порядками чисел с плавающей запятой. Так, при размещении порядка числа в 8 разря­дах используется двоичный код с избытком 128. В этом случае порядок, принимающий значения в диапазоне от — 128 до + 127, представляется смещенным порядком, значения которого меняются от 0 до 255, что позволяет работать с порядками как с целыми без знака.

Код Грея широко используется в различных преобразовательных устройствах (для кодирования положений валов, дисков и т. д.), с тем,

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

Характерной особенностью кода Грея является то, что в нем соседние кодовые слова различаются только в одном разряде. Комбинации кода Грея, соответствующие деся­тичным числам от 0 до 15, приведены в табл. 4.3

Правила перевода числа из кода Грея в обычный двоичный код сводятся к следующему:

1. Первая единица со стороны старших разрядов остается без изменения.

2. Последующие цифры (0 и 1) остаются без изменения, если число единиц, им пред­шествующих, четно, инвертируются - если нечетно.

Таблица 4.3.

Число в

деся­тичном коде

Двоичный код

Код Грея

Число в деся­тичном коде

Двоичный код

Код Грея

0

0000

0000

8

1000

1100

1

0001

0001

9

1001

1101

2

0010

0011

10

1010

1111

3

0011

0010

11

1011

1110

4

0100

0100

12

1100

1010

5

0101

0111

13

1101

1011

6

0110

0101

14

1110

1001

7

0111

0100

15

1111

1000

Пример 15: Выразим число 1011, записанное в коде Грея, в обычном двоичном коде: .

1. Первую слева цифру (1) переписываем — 1;

2. Вторую слева цифру (0) инвертируем, так как перед ней только одна единица — 1;

3. Третью цифру (1) опять инвертируем, так как перед ней только одна единица — 0;

4. Четвертую цифру (1) оставляем без изменений, так как перед ней две единицы — 1. Таким образом, числу 1011 в коде Грея соответствует двоичное число— 1101. Код Грея, широко используется для кодирования положений валов, дисков и т. д., позволяя свести к единице младшего разряда погрешность при считывании.

На рис. 4.1 представлен один из вариантов кодирующей маски, выполненной в виде диска с обычным двоичным кодом. Внешняя дорожка диска соответствует младшему разряду. Каждому дискретному значению угла ставится в соответствие определенное дво­ичное число.

Для считывания с каждого из разрядов могут использоваться различные чувствительные элементы: щетки, фотоэлементы и т. д. При использовании такой маски с обычным дво­ичным кодом в местах, где одновременно изменяется состояние нескольких чувствитель­ных элементов, при считывании могут возникать значительные погрешности. Так, если чувствительные элементы располагаются на границе между числом 7 (0111) и 8 (1000), то преобразователь с двоичным кодом может выдать на выходе любое число от 0 до 15.

Рис 4.1 Кодирующая маска в виде диска с двоичным кодом.

Указанный недостаток устраняется при использовании масок с кодом Грея. Коди­рующая маска в виде прямоугольной пластины с кодом Грея изображена на рис. 4.4

0

1

1

0

0

1

1

0

0

1

1

0

0

1

1

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Рис 4.2 Кодирующая маска в виде прямоугольной пластины с кодом Грея.

Вывод:

В коде Грея при последовательном переходе от числа к числу изменяется только один разряд, поэтому погрешность при считывании не может превосходить единицы младшего разряда независимо от того, в каком разряде имела место неопределённость.

Погрешности представления числовой информации в ЭВМ

Представление числовой информации в ЭВМ, как правило, влечет за собой появле­ние погрешностей (ошибок), величина которых зависит от формы представления чисел и от длины разрядной сетки цифрового автомата.

Абсолютная погрешность ∆[А] представления кода числа в разрядной сетке ЭВМ определяется по формуле:

∆[A]=|A| - |Am| (4.7)

где |А| — модуль числа А, код которого требуется представить в ЭВМ;

М| —: модуль числа Ам, код которого представлен в разрядной сетке. Относительная погрешность представления – величина

δ[A] = ∆|A] / |AM| (4.8)

Для чисел с фиксированной запятой, наибольшее значение абсолютной погрешности равно весу младшего разряда разрядной сетки:

∆[A]max = 2-r (4.9)

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

Отбрасывание младших разрядов кода числа, не вошедших в разрядную сетку, мо­жет быть выполнено с округлением. В этом случае, если число ∆A код которого отбрасывается, меньше половины веса младшего разряда разрядной сетки ЭВМ (∆A < 0,5x2-r), то код числа в разрядной сетке остается без изменений. В противном случае в младший раз­ряд кода разрядной сетки добавляется единица.

Наибольшая абсолютная погрешность представления числа в разрядной сетке с округлением равна:

∆[A0] max =0,5x2-r

Пределы изменения относительной погрешности при представлении чисел с фик­сированной запятой в ЭВМ с округлением определяются по формулам:

δ [A]min= Δ[A0]max/ |A|max = 0,5*2-r / (2n – 2-r); (4.10)

δ [A]max= Δ[A0]max/ |A|min = 0,5x2-r / 2-r = 0,5, (4.11)

где n- число разрядов до запятой

r- число разрядов после запятой

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

Для представления чисел в форме с плавающей запятой (см. рис. 3.14) абсолютное значение мантиссы МA:

2-1 ≤ |MA| ≤ 1-2-m , (4.12)

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

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

равно весу младшего разряда разряд­ной сетки, а наибольшая абсолютная погрешность представления мантиссы в разрядной сетке с округлением равна:

∆[MA]max = 0,5x2-m

Для нахождения погрешности представления числа Аm в форме с плавающей той величину этой погрешности надо умножить на величину порядка числа Ра:

δ [A]max = Δ[Am]max / |Am|min = 0,5*2-m P A / (2-1PA) = 2-m (4.13)

δ [A]min = Δ[Am]max / |Am|max = 0,5*2-m P A / ((1 – 2-m / (1 – 2-m)PA (4.14)

где m – количество разрядов для представления числа.

Для ЭВМ m ≥ 16, тогда 1 – 2-m = 1 и δ [A]min = 0,5*2-m

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