Разделы


Рекомендуем
Автоматическая электрика  Автоматика радиоустройств 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 [ 103 ] 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270

знаковых разрядов по модулю 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




1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 [ 103 ] 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270

Яндекс.Метрика
© 2010 KinteRun.ru автоматическая электрика
Копирование материалов разрешено при наличии активной ссылки.