Разделы
Рекомендуем
|
Автоматическая электрика Автоматика радиоустройств знаковых разрядов по модулю 2 выполняется по правилу: 0 + 0 = 0 0+1 = 1 1+0=1 1 + 1=0 Представление чисел в машинах с фиксированной запятой. Числа в машинах с фиксированной запятой изображаются набором цифр (кодом) вида: XoXlX2X3 ... Хп9 где Хо - цифра двоичной системы счисле- ления, изображающая знак; Xi (i - от 1 до п) - цифра i-ro разряда числа х. В машинах с фиксированной запятой диапазон изменения чисел обычно мал, что необходимо учитывать при подготовке задач для решения на машине. Так, например, при о=4, п-3 и /п=4 из формулы (24-65) устанавливаем, что диапазон изменения чисел в десятичной системе находится в пределах от 0000,0001 до 9999,9999. Все числа, меньшие 0000,0001, в машине будут представлены в виде нулей (машинные нули). Если же прн решении будут встречаться числа больше 9999,9999, то возникнет так называемое переполнение разрядной сетки. Для того чтобы избежать появления машинных нулей или же переполнения разрядной сетки, необходимо для чисел выбрать соответствующие масштабные коэффициенты. Подбор масштабных коэффициентов затрудняет подготовку задач для решения на машинах с фиксированной запятой. Представление чисел в машинах с плавающей запятой. В машинах с плавающей запятой, как уже говорилось, показатель q (порядок числа) не является постоянным. Каждое число изображается в виде Двух частей. Первая часть служит для изображения порядка, вторая часть - для изображения цифровой части числа (так называемой мантиссы), т. е. число х представляется в виде х - рча, где Р- основание системы счисления; q - порядок числа; а-мантисса числа. При р=2, x=2qa. В качестве мантиссы а обычно выбирают правильную дробь, т. е. полагают: \а\ < 1. С учетом цифр, изображающих знаки порядка и мантиссы, числа в машинах с плавающей запятой представляются в виде УвУхУъ--Ук, хйххх2 - * , порядок мантисса где уо-знак порядка; х0 - знак мантиссы; й Уч, - yk- величина порядка; xt Xg... хп - величина мантиссы. Например, двоичный код 0110,0111011001 содержит порядок +110, равный плюс шести (+6), и мантиссу+0,111011001, т.е. изображает собой число х=26- 0,111011001. В машинах с плавающей запятой двоичные числа называются нормализованными, если они представлены в виде х - 2 а, а = ±0,1 х2х3... хп, т.е. первая цифра после запятой в мантиссе есть 1. Числа называются ненормализованными, если первая цифра после запятой в мантиссе есть 0. В этих машинах, как правило, предусмотрена автоматическая нормализация. При появлении после запятой цифры 0 производится сдвиг числовой части влево до появления цифры 1 после запятой. При этой операции происходит автоматическое изменение порядка, в данном случае уменьшение порядка на столько единиц, сколько сдвигов влево необходимо выполнить для получения нормализованного числа. Основным преимуществом машин с плавающей запятой сравнительно с машинами с фиксированной запятой является широкий диапазон представления чисел. Если для представления порядков отведено k двоичных разрядов, то порядки могут принимать значения от -(2Ь-1) до + (2*-1). Возможность получения большого диапазона представления чисел в этих машинах позволяет практически избежать масштабирования задач. Кроме того, при представлении чисел в форме с плавающей запятой сохраняется относительная точность представления чисел во всем диапазоне их изменения, поскольку мантисса -.независимо от порядка всегда имеет одно и то же количество значащих цифр, в то время как представление малых величин в форме с фиксированной запятой осуществляется с большими относительными погрешностями. Выполнение арифметических операций в двоичной системе счисления Сложение двоичных чисел в машинах с фиксированной запятой. Операция сложения чисел, представленных; в двоичной сис-. теме счисления, выполняется аналогично сложению в любой другой позиционной системе: Сложение одноразрядных двоичных чисел выполняется в соответствии с таблицей, приведенной ниже: 0+0= 0 0+1= 1 1+0= 1 1+1 = 10 (нуль плюс единица переноса в старший разряд) Примеры сложения многоразрядных двоичных чисел: ,1001110 ,0,010111 +0100111 +0,100110 1110101 0,111101 Вычитание двоичных чисел в машинах с фиксированной запятой. Арифметические устройства электронных цифровых машин, предназначенные для выполнения сложения, конструктивно проще, чем для выполнения прямого вычитания. Это привело к тому, что в большинстве цифровых машин прямое вычитание заменено сложением чисел, представленных в виде дополнений. Если требуется получить разность С двух чисел А и В, то в машине эта операция выполняется путем сложения кодов А к В, С= [А] + [В]. В цифровых машинах для изображения чисел применяются прямой, обратный и дополнительный коды. При рассмотрении кодов будем оперировать с числами в двоичной системе счисления с запятой, фиксированной перед старшим двоичным разрядом. Прямой код. Если х=0, Xi х2 ... ... хп, где xt - цифра t-го разряда, равная О или 1, то прямым кодом числа называют его представление вида [х]Пр = 0, XiXz... хп, где [х]Пр - изображение числа х в прямом коде, нуль обозначает положительный знак числа. Для положительного числа [х]пр=х, т. е. прямой код положительногочисла совпадает с самим числом. Если число отрицательное х=-0, Х\Х2 ... хп, то прямой код имеет следующий вид: [х]пр = 1, XiX2 ... Хп7 т. е. [Х]пр = 1- (-0, XiX2... хп) = = 1 - X: (24-66) Для отрипательного числа имеет соотношение Мпр = 1-Х, где х - заданное число со своим знаком, или [x]np=l+Jx, (24-67) где \х\-абсолютное значение отрицательного числа Пример. Найти прямой код чисел х= = +0,10111 и х=-0,10111. Если х-(-0,10111, то [х]пр=0,10П1. Если х=- 0,10111, то [х]пр = 1 - (-0,10111) = = 1+0,10111 = 1,10111, [х]пр = 1,10111. Для получения прямого кода отрицательного числа необходимо в знаковом разряде поставить единицу, а мантиссу оставить без изменения. Рассмотрим в частном случае представление нуля в прямом коде. Если взять положительное число и устремить его к нулю, то в пределе, очевидно, получим: [0]пр = 0,000 ...0. С другой стороны, приближая к нулю малые отрицательные числа, в пределе будем иметь 1,000 ... 0, что означает отрицательный нуль [-0]пр. Таким образом, в прямом коде нуль имеет два представления. Обратный код. Если число положительное х=+0, X\Xz ... Хп, то по определению обратный код этого числа совпадает с прямым, т. е. Мобр = 0, XlX2... хп, [х]обВ = х. (24-68) Для отрицательного числа х--0, Х\Х2 ... ... Хп обратный код образуется по формуле Мобр = 1 > х\ *2 - хп > где xt - поразрядные дополнения, равные xi - х i ? Т.е. Х,= 1 ПрИ Х,=0 И Xi=0 при xt=l. Чтобы представить в обратном коде двоичное отрицательное число, необходимо в знаковом разряде поставить единицу, а в мантиссе заменить единицы на нули, а нули на единицы. Правило представления отрицательного числа х в обратном коде можно выразить следующей формулой: Мобр = 1 + х - Тп + 1 = 2 + х- Тп = обратный код знак числа числа = 2 - jc - 2 , (24-69) 2 эт - единица младшего и-го разряда.числа. В обратном коде, так же как и в прямом, нуль имеет два изображения: [+0]обР = 0,00 ...0; [-0]обР= 1,11... 1- .Пример. Найти обратный код отрицательного числа х = -0,100111; Мобр = 1,011000 Пользуясь формулой (24-69), получаем: [х]о6р = 2 + (-0,100111) -0,000001 = = 10 - 0,100111 -0 000001 = = 1,011001 - 0,000001 = 1,011000. Покажем, что существует способ сложения обратных кодов, позволяющий получить сумму также в обратном коде. Разберем несколько случаев. 1. Пусть Jti>0; х2>0; 0<Xi+x2<l. По формулам (24-68) имеем: I*i]o6p + [Хг]обр = Xi+x2 = - [xi + хг\ обр. 2. Х<0; х2>0. Здесь возможны два случая. а) 0<х1+х2<1; по формулам (24-68) и (24-69) имеем: [*i]o6P = 2 + *i - 2- ; [2]обр = ч [ i]06p + [X2J06P = 2 + Xi - 2n + xz = = 2 + X! + х2 - 2- к. (24-70) Отсюда видно, что для получения обратного кода положительной суммы [*i+ +*2]обр необходимо в правой части равенства вычесть 2 и одновременно прибавить 2~п. Поскольку число 2 в двоичной системе счисления имеет вид: 2=10,00 ... 0, то обе указанные операции можно осуществить путем переноса единицы из второго разряда перед запятой в младший разряд числа. Такая операция называется циклическим переносом. Для пояснения рассмотрим пример. Пример, а) пусть Xi-r-x2=+0,10111, т. е. п-Ъ. Тогда 2- == 0,00001. По формуле (24-70) получим: 10 + 0,10111-0,00001 = 10,10111 - - 0,00001 = 10,10110. Чтобы отбросить 2 и прибавить 2~п, перенесем единицу из второго разряда перед запятой в младший разряд, т. е. осуществим циклический перенос 10,10110=0,10110 I- 1+ L 0,10111 циклический перенос Полученный результат соответствует значению суммы х,+х2. При выполнении циклического переноса по указанному правилу можно записать, что [Xi]o6p + [л:2]обр = [xi + Х2]обр. б) xi<0, х2>0, - 1<х,+х2<0. Находим снова [xi]06p = 2 + Xi - 2-m; [х2] обр = х%; [xtl обр + [хг] обр = 2 + Xi - 2-и + xz = = 2 + (xi + хг) - 2-я. Так как - 1<х,+х2<0, то на основании формулы (24-69) приходим к выводу, что справа в записанном равенстве получился обратный код суммы [Xi+x2]o6p. Следовательно, [xi]o6P+[x2]o6P==[X+ +Хг]овр и циклический перенос в данном случае отсутствует. в) х,<0; х2<0; - l<xi+x2<0. Согласно формуле (24-69) можно записать: Мобр = 2 + Xi - 2-я; [х2]обР = 2 + х2 - 2- . Тогда [xi] обр + [хг] обр = 2 + xt - 2- + + 2 + х2 - 2- = = 2 + (2 + xt + x2 -2- )- 2- . обратный код суммы Для получения суммы в обратном коде в данном случае снова необходим циклический перенос единицы из второго разряда перед запятой в младший разряд суммы кодов. Можно сформулировать общее правило сложения обратных кодов. Чтобы получить обратный код суммы при сложении обратных кодов чисел, необходимо складывать обратные коды вместе с разрядами знаков как обычные числа и в случае возникновения единицы переноса- из знакового разряда прибавить ее к младшему разряду суммы. Рассмотрим сложение обратных кодов на примерах: 1. хх = +0,10111 [х,]оВр = 0,10111; х2 = +0,00110 [х2]обР = 0,00110; *1+*2= 0.Ю111 + 0,00110 0,11101 [ llo6p + [*2]0бр = [*1 + *2]обр =0,10111 + 0,00110 0,11101 xi = +0,1011 [Xi] 0бр = 0,10111; х2 = -0,00110 [х2]обр = 1,11001; Х1 + Х2 = 0.10001; [*llo6p+ Мобр = [*i + х2]обр = 0,10111 1,11001 10,10000 +->1 0,10001 [Xi +х2]обр == 0,10001. В результате сложения обратных кодов получена алгебраическая сумма заданных чисел. 3. xi = -0,10111 [Xi]06p - 1,01000; х2 = +0,00110 [xdoep = 0,00110; Xl + х2 = -0,10001; Мобр + [х2]обр = [xi + х2]обр = 1,01000 0,00110 1,01110
|
© 2010 KinteRun.ru автоматическая электрика
Копирование материалов разрешено при наличии активной ссылки. |