СХЕМОТЕХНИКА ЭВМ_18.2.17 (855859), страница 22
Текст из файла (страница 22)
Двоичная система, удобная для ЭВМ, для человека неудобна из-за громоздкости и непривычной записи. Для этого и разработаны 8 система счисления(с/с) и 16 с/с.
Числа в этих с/с читаются почти так же легко, как и десятичные, требуют соответственно в три (8с/с) и в четыре (16с/с) раза меньше разрядов, чем в 2с/с (числа 8 и 16 соответственно 3-я и 4-я степени числа 2).
Перевод чисел из 8 с/с и 16 с/с в 2 с/с очень прост: достаточно каждую цифру заменить эквивалентной ей двоичной триадой (тройкой цифр) или тетрадой (четверкой цифр):
Например,
537,18=101 011 111,0012
1A3,F16=1 1010 0011,11112[схематичное представление информативнее]
Чтобы перевести число из 2с/с в 8с/с или 16с/с, нужно разбить влево и вправо от запятой на триады (для 8с/с) или тетрады (для 16с/с) и каждую такую группу заменить соответствующей 8-ричной или 16-ричной цифрой.
10101001,101112=10 101 001, 101 1102=251,568
10101001,101112=1010 1001, 1011 10002=А9,В816
[схематичное представление информативнее]
Перевод чисел из 10 с/с в 2с/с, 8 с/с, 16 с/с
Перевод целых чисел:
-
Исходное число разделить на основание новой с/с (Р). Остаток от деления записать в новой с/с. Это младшая цифра искомого числа.
-
Если частное от деления равно 0, то искомое число получено
-
Если частное не равно 0, то разделить его на Р. Остаток от деления записать в новой с/с. Это предыдущая цифра искомого числа.
[пример]
Число с основанием Р записывается как последовательность остатков от деления в обратном порядке, начиная с последнего.
Перевод правильных десятичных дробей:
-
Правильную десятичную дробь при переводе необходимо последовательно умножать на основание той системы счисления, в которую она переводится, отделяя после каждого умножения целую часть произведения.
-
Число в новой с/с записывается как последовательность полученных целых частей произведения.
Умножение производится до тех пор, пока дробная часть произведения не станет равна 0. Это значит, что сделан точный перевод. В противном случае, перевод осуществляется до заданной точности.
[пример]
Перевод смешанных чисел осуществляется в 3 этапа:
-
Осуществляется перевод целой части числа в новую с/с.
-
Осуществляется перевод дробной части числа в новую с/с.
-
Складываются результаты переводов первых 2-х пунктов.
[пример]
Перевод чисел из 2 с/с, 8 с/с, 16 с/с и т.д. (из Р-ой с/с) в 10 с/с.
-
Записать переводимое число в виде полинома в старой с/с.
-
В полученном полиноме заменить основание и все коэффициенты числами в новой с/с (10 с/с).
-
Выполнить арифметические действия в новой (10-ой) с/с.
Например,
9В317=9*172+В*171+3*170=279110
110101,012=1*25+1*24+0*23+1*22+0*21+1*20+0*2-1+
+1*-2=32+16+4+1+0,25=53,2510
При выполнении арифметических операций над двоичными числами без знака следует учитывать необходимость выравнивания положений чисел по младшим разрядам и возможность изменения разрядности результата. Например, при сложении разрядность результата может превышать разрядность наиболее длинного операнда на 1, а при умножении- длина результата равна сумме разрядностей операндов. Например, сложении двух двоичных кодов 11 и 1 выполняется как 11+01 и дает результат 100 ( три разряда), а умножении 11 на 11 дает 1001.
7.2. Двоичные коды чисел.
В ЭВМ при выполнении арифметических операций применяют двоичный прямой, обратный и дополнительный коды чисел. К кодам чисел выдвигаются следующие требования:
1) разряды числа в коде жестко связаны с определенной разрядной сеткой;
2) для записи кода знака в разрядной сетке отводится фиксированный разряд.
Такое представление чисел называется представлением с фиксированной запятой.
Например, если за основу представления двоичного кода числа взят один байт, то для представления значения числа будет отведено 7 разрядов, а для записи кода знака один разряд. В примерах мы знаковый разряд числа будем отделять символом запятой и располагать слева.
Прямой код (ПК)числа. Прямой код двоичного числа совпадает по изображению с записью самого числа. Значение знакового разряда для положительных чисел равно 0, а для отрицательных чисел 1. Например, в случае, когда для записи кода числа выделен один байт, для положительного десятичного числа + 9, в двоичном коде представленного как +1001, ПК равен 0,0001001. Для отрицательного числа 9 – двоичный ПК равен 1,0001001.
Обратный код (ОК). Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица. Например, для двоичного кода положительного числа +9, представляемого в 8-ми разрядной сетке, ОК равен 0,0001001. Для отрицательного числа -9, двоичный ОК равен 1,1110110.
Дополнительный код (ДК). Дополнительный код положительного числа совпадает с прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы.
Ниже приведен пример представления одного и того же отрицательного числа (-9 или в двоичной системе -1001) в восьмиразрядной сетке в различных кодах
Прямой код | Обратный код | Дополнительный код |
1,0001001 | 1,1110110 | 1,1110111 |
Особенности сложения чисел в обратном и дополнительном кодах.
Операция вычитания обычно выполняется в ЭВМ как операция сложения отрицательного значения вычитаемого и поэтому ниже рассмотрена только операция сложения. При сложении чисел в дополнительном коде (ДК) возникающая единица переноса в знаковом разряде отбрасывается. При сложении чисел в обратном коде (ОК) возникающая единица переноса в знаковом разряде прибавляется к младшему разряду суммы. Результат операции обычно хранится в соответствующем коде, но иногда, например, при выводе на печать, необходимо преобразовать его в прямой код. При этом ОК преобразуется в ПК заменой цифр во всех разрядах, кроме знакового, на противоположные. ДК преобразуется в ПК также, как и обратный код, с последующим прибавлением единицы к младшему разряду (см. примеры 7.1 и 7.2). [пример]
Пример 7.1. Требуется сложить десятичные числа Х=7 и Y= -3.
В двоичной системе это коды X=+111 и Y=-11 , они же, представленные в 8-ми разрядной сетке со знаковым разрядом слева, Аргументы обозначим как Х= 0,0000111 и Y=1,0000011, результат S. Сложение этих чисел в обратном и дополнительном коде представлено в табл.7.1 Так как результат – положительное число, то результаты в ПК, ОК и ДК совпадают.
Таблица 7.1.Сложение чисел в прямом, дополнительном и обратном и коде, результат положительный[пример должен быть поэтапным]
Аргументы и результат | ПК | ДК | ОК |
Х | 0,0000111 | 0,0000111 | 0,0000111 |
Y | 1,0000011 | 1,1111101 | 1,1111100 |
Промежу- точный результат | 0,0000100 | 1<- 0,0000100 1 переноса за знаковый разряд отбрасывается | 1<- 0,0000011 1 переноса за знаковый разряд прибавляется к младшим разрядам |
Результат S | 0,0000100 | 0,0000100 | 0,0000100 |
Пример 7.2. Требуется сложить отрицательные двоичные числа X=-101 и Y=-11 представленные в 8-ми разрядной сетке в обратном и дополнительном кодах. Результат отрицательный ( см. табл.7.2).
Таблица 7.2. Сложение чисел в прямом, дополнительном и обратном и коде , результат отрицательный
Аргументы и результат | ПК | ДК | ОК |
Х | 1,0000101 | 1,1111011 | 1,1111010 |
Y | 1,0000011 | 1,1111101 | 1,1111100 |
Промежу-точный результат | 1,0001000 | 1<- 1,1111000 перенос за знаковый разряд отбрасывается | 1<- 1,1110110 1 переноса за знаковый разряд прибавляется к младшим разрядам |
Результат S операции в соответствую-щем коде | 1,0001000 | 1,1111000 | 1,1110111 |
[пример должен быть поэтапным]
7.3. Модифицированные обратный (МОК) и дополнительный (МОД) чисел
При переполнении разрядной сетки, в которой представлены двоичные числа со знаком, происходит перенос единицы в знаковый разряд. Это приводит к неправильному результату, причем положительное число, получившееся в результате арифметической операции, может восприниматься как отрицательное (так как в знаковом разряде "1") и наоборот. Например, при сложении двоичных чисел Х=0,1000110 и Y=0,1 000011 имеем результат = 1, 0001001. [поэтапно]Здесь X и Y - коды положительных чисел, и результат положителен, но результат их сложения -это код отрицательного числа ("1" в знаковом разряде). Для обнаружения переполнения разрядной сетки используются модифицированные коды (МК).
В модифицированном обратном (МОК)и модифицированном дополнительном(МОД) кодах под знак числа отводится не один, а два разряда: "00" соответствует знаку "+", "11" - знаку "-". Любая другая комбинация ("01" или "10"), получившаяся в знаковых разрядах служит признаком переполнения разрядной сетки. В остальном, сложение чисел в модифицированных кодах ничем не отличается от сложения в обычных обратном и дополнительном кодах.
Итак, основные правила выполнения операций сложения и вычитания чисел.
1. Числа в прямом коде со знаком:
Сложение. При одинаковых знаках чисел сложить. Результату присвоить тот же знак. Переполнение возникает при возникновении переноса из старшего разряда.
При разных знаках чисел вычесть меньшее число из большего. Результату присвоить знак большего числа. Переполнение не возникает.
Вычитание. Изменить знаковый бит числа и провести сложение.
2. Числа в дополнительном коде:
Сложение. Сложить два числа, игнорируя перенос из старшего разряда. Переполнение возникает, если переносы в старший разряд и из старшего разряда различны.
Вычитание. Инвертировать все биты числа – вычитаемого и сложить с числом – уменьшаемым. К результату прибавить единицу в младший разряд.
7.4. Функциональная схема АЛУ для сложения и вычитания чисел с фиксированной запятой
Функциональная схема АЛУ для сложения и вычитания чисел с фиксированной запятой представлена на следующем рисунке
Рис. 7.1. Функциональная схема АЛУ для сложения и вычитания чисел с фиксированной запятой в дополнительном коде