Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
EVM_30-32_1-8.docx
Скачиваний:
68
Добавлен:
03.05.2015
Размер:
559.41 Кб
Скачать

5. Представление чисел в дополнительном коде. Методика алгебраического суммирования в дополнительном коде при представлении исходных чисел и суммы в прямом коде

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

Дополнительный код положительного числа совпадает с его представлением в прямом коде.

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

Для преобразования прямого кода отрицательного числа в дополнительный необходимо все значащие разряды заменить на противоположные (проинвертировать) и прибавить 1 к младшему разряду. Знаковый разряд остается без изменения.

[A]пр=0,10110100; [A]дк=0,10110100;

[В]пр=1,10111101; [В]дк=1,01000011.

Сложение в дополнительном коде

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

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

1) А›0, В›0, С›0.

А=+0,101101 В=+0,000111

Апр=0,101101 Впр=0,000111

Адк=0,101101 ВДК=0,000111 Сдк=Адк+Вдк

+0,101101

0,000111

0,110100

2) А›0, В‹0, С›0.

А=+0,101101 В=-0,000111

Апр=0,101101 Впр=1,000111

Адк=0,101101 ВДК=1,111001 Сдк=Адк+Вдк

+ 0,101101

1,111001

10,100110 (1 переноса из знакового разряда суммы не учитывается)

3) А‹0, В›0, С‹0.

А=-0,101101 В=+0,000111

Апр=1,101101 Впр=0,000111

Адк=1,010011 ВДК=0,000111 Сдк=Адк+Вдк

+ 1,010011

0,000111

1,011010 (Спр= 1,100110)

4) А‹0, В‹0, С‹0.

А=-0,101101 В=-0,000111

Апр=1,101101 Впр=1,000111

Адк=1,010011 ВДК=1,111001 Сдк=Адк+Вдк

+ 1,010011

1,111001

11,001100 (Спр= 1,110100)

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

1. Способы представления чисел. Представление чисел с фиксированной точкой. Представление чисел с фиксированной запятой. Представление чисел с плавающей запятой. Диапазон и точность представления чисел.

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

Числа с фиксированной точкой

Большим преимуществом чисел в формате плавающей точкой является точность.

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

Пример. Число 123.654 представится в виде:

Число 123.654 * 216 = 8060928 + 42860 = 8103788

Заметим, что числа, хранящиеся в таком представлении, можно:

складывать и вычитать между собой;

делить и умножать на целые числа в обычном представлении.

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

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

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

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

В знаковую часть записывается информация о знаке числа. Принято, что знак положительного числа "+" изображается символом 0, а знак отрицательного числа "-" изображается символом 1.

Например, в двоичном коде, используя 6-разрядную сетку, число 7 в форме с фиксированной запятой можно представить в виде:

0.001112,

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

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

|A|max = (2(n-1) - 1),

где n - полная длина разрядной сетки. В случае 16-разрядной сетки

|A|max = (2(16-1) - 1) = 3276710 ,

т.е. диапазон представления целых чисел в этом случае будет от +3276710 до -3276710 .

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

(2(n-1) - 1) и меньше единицы не представляются в форме с фиксированной запятой. Числа, по абсолютной величине меньше единицы младшего разряда разрядной сетки, называются в этом случае машинным нулем. Отрицательный ноль запрещен.

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

Представление чисел с плавающей запятой

мантисса не может быть больше единицы и после запятой в мантиссе не может записываться ноль.

А теперь рассмотрим промышленные стандарты, используемые для представления чисел в компьютерах. Существует стандарт IEEE 754 для представления чисел с одинарной точностью (float) и с двойной точностью (double). Для записи числа в формате с плавающей запятой одинарной точности требуется тридцатидвухбитовое слово. Для записи чисел с двойной точностью требуется шестидесятичетырёхбитовое слово. Чаще всего числа хранятся в нескольких соседних ячейках памяти процессора. Форматы числа в формате с плавающей запятой одинарной точности и числа в формате с плавающей запятой удвоенной точности приведены на рисунке

На рисунке буквой S обозначен знак числа, 0 — это положительное число, 1 — отрицательное число. e обозначает смещённый порядок числа. Смещение требуется, чтобы не вводить в число еще один знак. Смещённый порядок всегда положительное число. Для одинарной точности для порядка выделено восемь бит. Для смещённого порядка двойной точности отводится 11 бит. Для одинарной точности смещение принято 127, а для двойной точности — 1023. В десятичной мантиссе после запятой могут присутствовать цифры 1...9, а в двоичной — только 1. Поэтому для хранения единицы после двоичной запятой не выделяется отдельный бит в числе с плавающей запятой. Единица подразумевается, как и двоичная запятая. Кроме того, в формате чисел с плавающей запятой принято, что мантисса всегда больше 1. То есть диапазон значений мантиссы лежит в диапазоне от 1 до 2.

2=10.Системы счисления. Выбор системы счисления. Перевод чисел из одной системы счисления в другую. Перевод чисел, представленных в 2k-х системах счисления.

Система счисления - это способ записи чисел с помощью заданного набора специальных знаков (цифр)

Существуют системы позиционные и непозиционные.

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

Пример непозиционной системы счисления - римская. В качестве цифр в римской системе используются: I(1), V(5), X(10), L(50), C(100), D(500), M(1000).

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

Пример:

CCXXXII=232

IX =9

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

Любая позиционная сиситема характеризуется своим основанием.

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

Двоичная система счисления используется для кодирования дискретного сигнала, потребителем которого является вычислительная техника. Такое положение дел сложилось исторически, поскольку двоичный сигнал проще представлять на аппаратном уровне. В этой системе счисления для представления числа применяются два знака – 0 и 1.

Шестнадцатеричная система счисления используется для кодирования дискретного сигнала, потребителем которого является хорошо подготовленный пользователь – специалист в области информатики. В такой форме представляется содержимое любого файла, затребованное через интегрированные оболочки, например, средствами Far. Используемые знаки для представления числа – десятичные цифры от 0 до 9 и буквы латинского алфавита – A, B, C, D, E, F.

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

Для различения систем счисления, в которых представлены числа, в обозначение двоичных и шестнадцатеричных чисел вводят дополнительные реквизиты:

• для двоичных чисел – нижний индекс справа от числа в виде цифры 2 или букв В или b (binary – двоичный), либо знак B или b справа от числа. Например, 1010002 = 101000b = 101000B = 101000B = 101000b;

• для шестнадцатеричных чисел - нижний индекс справа от числа в виде числа 16 или букв H или h (hexadecimal – шестнадцатеричный), либо знак H или h справа от числа. Например, 3AB16 = 3ABH = 3ABh = 3ABH = 3ABh.

1. Из десятичной системы счисления – в двоичную и шестнадцатеричную:

а) исходное целое число делится на основание системы счисления, в которую переводится (2 или 16); получается частное и остаток;

б) если полученное частное меньше основания системы счисления, в которую переводится число, процесс умножения прекращается, переходят к шагу в). Иначе над частным выполняют действия, описанные в шаге а);

в) все полученные остатки и последнее частное преобразуются в цифры той системы счисления, в которую выполняется перевод;

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

Из двоичной и шестнадцатеричной систем счисления – в десятичную. В этом случае рассчитывается полное значение числа по рассмотренной выше формуле.

Пример . Выполнить перевод числа 1316 в десятичную систему счисления. Имеем:

1316 = 1*161 + 3*160 = 16 + 3 = 19.

Таким образом, 1316 = 19.

Пример . Выполнить перевод числа 100112 в десятичную систему счисления. Имеем:

100112 = 1*24 + 0*23 + 0*22 + 1*21 + 1*20 = 16+0+0+2+1 = 19.

Таким образом, 100112 = 19.

3. Из двоичной системы счисления в шестнадцатеричную:

а) исходное число разбивается на тетрады (т.е. 4 цифры), начиная с младших разрядов. Если количество цифр исходного двоичного числа не кратно 4, оно дополняется слева незначащими нулями до достижения кратности 4;

б) каждая тетрада заменятся соответствующей шестнадцатеричной цифрой

4. Из шестнадцатеричной системы счисления в двоичную:

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

б) незначащие нули в результирующем числе отбрасываются.

1. Из десятичной системы счисления – в двоичную и шестнадцатеричную:

а) исходная дробь умножается на основание системы счисления, в которую переводится (2 или 16);

б) в полученном произведении целая часть преобразуется в цифру нужной системы счисления и отбрасывается – она является старшей цифрой получаемой дроби;

в) оставшаяся дробная часть вновь умножается на нужное основание системы счисления с последующей обработкой полученного произведения в соответствии с шагами а) и б);

г) процедура умножения продолжается до тех пор, пока ни будет получен нулевой результат в дробной части произведения или ни будет достигнуто требуемое количество цифр в результате;

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

2. Из двоичной и шестнадцатеричной систем счисления – в десятичную. В этом случае рассчитывается полное значение числа, причем коэффициенты ai принимают десятичное значение

Пример . Выполнить перевод из двоичной системы счисления в десятичную числа 0,11012. Имеем:

0,11012 = 1*2-1 + 1*2-2 + 0*2-3 +1*2-4 = 0,5 + 0,25 + 0 + 0,0625 = 0,8125.

3. Из двоичной системы счисления в шестнадцатеричную:

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

б) каждая тетрада заменяется шестнадцатеричной цифрой.

4. Из шестнадцатеричной системы счисления в двоичную:

а) каждая цифра исходной дроби заменяется тетрадой двоичных цифр ;

б) незначащие нули отбрасываются.

Пример . Выполнить перевод из шестнадцатеричной системы счисления в двоичную числа 0,2А16.

По табл. 2.1 имеем 216 = 00102 и А16 = 10102.

Тогда 0,2А16 = 0,001010102.

Отбросим в результате незначащий ноль и получим окончательный результат: 0,2А16 = 0,00101012.

Правило перевода неправильных дробей

Отдельно переводится целая часть числа, отдельно – дробная. Результаты складываются

7. Умножение чисел с фиксированной запятой в прямом и дополнительном кодах

Умножение чисел в прямом коде.

Алгоритм умножения двоичных чисел в ПК.

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

2. Перемножить модули сомножителей одним из четырех способов.

3. Присвоить полученному произведению знак из п.1.

Пример 4. Перемножить числа А=26(10)=11010(2); В=-19(10)=-10011(2), представив их в 2СС, ПК, с ФЗ.

1. Знак произведения: 01=1.

2. Перемножим модули сомножителей, используя I способ.

В=0,10011 – модуль множимого.

Таблица

3. Прямой код произведения:

АВ=1,0111101110.

4. Проверка результата.

Масштаб произведения МАМВ=210.

АВ=-111101110(2)=-494(10).

Умножение чисел в дополнительном коде с простой коррекцией

Алгоритм умножения двоичных чисел в ДК с простой коррекцией.

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

2. Перемножить модули сомножителей, представленных в ДК, одним из четырех способов – получить псевдопроизведение.

3. Если хотя бы один из сомножителей отрицателен, выполнить коррекцию по следующим правилам:

-если один сомножитель отрицателен, к псевдопроизведению прибавляется дополнительный код от модуля положительного сомножителя;

-если оба сомножителя отрицательны, к псевдопроизаведению прибавляются дополнительные коды от модулей дополнительных кодов обоих сомножителей, т.е. их прямые коды.

4. Присвоить модулю произведения знак из п.1 данного алгоритма.

Пример 5. Перемножить числа А=-18(10)=-10010(2); В=27(10)=11011(2), представив их в ДК и применив алгоритм с простой коррекцией.

М=25 АПК =1,10010; АДК =1,01110

ВПК =0,11011; ВДК =0,11011

1. Знак произведения: 10=1.

2. Перемножить модули сомножителей, используя II способ.

Таблица

Получено псевдопроизведение: 0,0101111010

3. Так как один из сомножителей отрицателен, нужна коррекция дополнительным кодом от модуля положительного сомножителя:

ВДК=0,00101 0,0101111010

0,00101

Модуль полного произведения 0,1000011010.

4. Полное произведение в дополнительном коде:

(АВ)ДК=1,1000011010.

5. Проверка результата.

Масштаб произведения МАМВ=210.

(АВ)ПК=1,0111100110 (х210).

АВ=-111100110(2)=-486(10).

Соседние файлы в предмете Вычислительная техника