Звоните! 
 (926)274-88-54 
 Бесплатная доставка. 
 Бесплатная сборка. 
Ассортимент тканей

График работы:
Ежедневно. С 8-00 до 20-00.
Почта: soft_hous@mail.ru
Читальный зал -->  Программные средства foundation 

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 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359

+1 10001 -1 1111

1 - с 1

+3 ООП ООП -3 П01 1101

- -4 - 1100 + ООП 4 1100 + ООП

+7 0111 +1 10001

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

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

-(-8) = -1000= 0111 + 0(Ю1

lOOO = -8

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

Существует замечательное правило обнаружения переполнения {overflow rule) при сложении: сложение приводит к переполнению, если знаки слагаемых одинаковы, а знак суммы отличается от знака слагаемых. Это правило иногда формулируют в терминах переносов, возникающих при выполнении операции сложения: переполнение наступает, если бит переноса в знаковый разряд с и бит переноса из него с различны. Внимательное рассмотрение приведенной ранее табл. 2.3 показывает, что эти два правила эквивалентны: имеются только два случая, когда с с, и это те два случая, в которых л: =>, а бит суммы имеет другое значение.

2.6.4. Правила вычитания

Числа, представленньЕе в дополнительном коде, могут участвовать в вычитании как обычные двоичные числа без знака, и для них можно сформулировать соответствующие правила обнаружения переполнения. Однако в большинстве случаев схемы, предназначенные для вычитания чисел в дополнительном коде {twos-complement subtraction), не выполняют эту операцию непосредственно. Чаще всего в них осуществляется изменение знака у вычитаемого путем взятия его точного дополнения, а затем оно складывается с уменьшаемьЕм по обычным правилам сложения.

Изменение знака у вычитаемого и сложение с уменьшаемым можно следующим образом вьЕполнить в одной единственной операции сложения: берем поразрядное дополнение вычитаемого и складываем его с уменьшаемым, полагая значение переноса в младший разряд (с) равным 1, а не 0. Приведем примеры:

1 - с. 1 - с.

+4 0100 0100 +3 ООП ООП

- +3 -ООП + 1100 - +4 - 0100 + 1011



1 - с

44 0100 + -8 + 1000

1100

-3 -8 +5

1101 1101 1000 + 0111 lOlOl

2.6.5. Дополнительный код и двоичные числа без знака

Поскольку числа, представленные в дополнительном коде, складываются и вычитаются по тем же самым основным алгоритмам двоичного сложения и вычитания, что и числа без знака той же длины, компьютер или какая-либо другая цифровая система могут использовать один и тот же сумматор для обработки чисел обоих типов. Однако результат должен интерпретироваться по-разному в зависимости от того, с чем имеет дело система: с числами со знаком (то есть с числами из интервала от -8 до +7; signed numbers) или с числами без знака (из интервала от О до 15; unsigned numbers).

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

Вычитание


Сложение

1001

1000

0111

Рис. 2.4. Представление счета по модулю для 4-разрядных двоичных чисел без знака

Легко видеть, что выход за пределы диапазона представимых чисел при сложении происходит в том случае, когда указатель, вращаясь по часовой стрелке, проходит через разрыв между 15 и 0. Говорят, что при этом возникает перенос {carry) из старшего разряда.

Аналогично, при вычитании мы выходим за пределы диапазона представимых чисел, если указатель в результате вращения против часовой стрелки проходит



2.7. Сложение и вычитание двоичных чисел в обратном коде 69

через этот разрыв. В этом случае говорят, что в старшем разряде возникает потребность заема {borrow).

Из рис. 2.4 следует также, что вычитание числа без знака, равного и, можно осуществить, повернув указатель по часовой стрелке на 1 б - и позиций. Это эквивалентно сложению с точным дополнением числа п. При вычитании заем возникает, если соответствующее сложение с точным дополнением не приводит к переносу.

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

*2.7. Сложение и вычитание двоичных чисел в обратном коде

Взглянем еще раз на табл. 2.6; это поможет нам объяснить правило сложения двоичных чисел, представленных в обратном коде. Если начать с числа 1000 (-7,о) и считать в прямом направлении, то каждое следующее число будет получаться из предыдущего в результате добавления 1, за исключением перехода от НП (отрицательный 0) к 0001 (+1,(,). При достижении числа 1111 мы должны для продолжения правильного счета прибавить 2, а не 1. Из этого следует алгоритм сложения двоичных чисел в обратном коде: следует выполнять стандартное двоичное сложение, но добавлять еще одну 1 при переходе через 1111.

Достижение значения ИП при сложении можно обнаружить, следя за переносом из знакового разряда. Таким образом, правило сложения двоичных чисел в обратном коде {ones -complement addition) можно сформулировать совсем просто:

Выполняется стандартное двоичное сложение; если возникает перенос из знакового разряда, то к результату прибавляется 1.

Это правило часто называют циклическим переносом {end-around carry). Ниже приведены примеры сложения в обратном коде; в последних трех примерах производится циклический перенос:

0100

0101

+ +4

+ 0100

+ -7

+ 1000

+ -5

+ 1010

0111

1100

1111

1101

1111

+ -5

+ 1010

+ -3

+ 1100

+ -0

+ 1111

lOlll

lOOlO

lino

+ 1

+ 1

+ 1

1000

1111

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



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 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359



ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку.



Звоните! Ежедневно!
 (926)274-88-54 
Продажа и изготовление мебели.


Копирование контента сайта запрещено.
Авторские права защищаются адвокатской коллегией г. Москвы
.