www.chms.ru - вывоз мусора в Балашихе 

Динамо-машины  Обратные коды 

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

гвторому методу:, (в) формируем цифры переноса, посылая при этом ницу на вход переноса младшего разряда

(B) . О 1 О О -

(C) О 10 1-(цифры переноса) (0).(1) (0)(1)ф (г) поскольку в предыдущем пункте не было переноса из старшего разряда, выполняем одновременно обращение кодов в регистрах В иС и вновь формируем сигналы переноса, посылая приэтом единицу на вход переноса младшего разряда

(B) .10 11 +

(C) .10 10 + (цифры переноса) (1).(0)(1)(1)ф (д) заканчиваем суммирование

(исходные числа) (В) .10 11 +

(С) .10 10+ (цифры переноса) (1).(0)(1)(1)ф

(сумма) *. О 1 1 0+

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

По третьему методу:

(в ) выполняем суммирование содержимого основных разрядов регистров В к С с круговым переносом (исходные числа) {В) .0 10 О-

(С).О 1 О 1- (цифры переноса) (0).(1)(0)(0)(0)

(сумма) .1001 -

(г ) так как в предьщущем пункте по цепи кругового переноса передавалась цифра laquo;О raquo;, производим обращение кода суммы, одновременно изменяя ее знак

.0110+

Число, которое в любом случае мы получали в конечном итоге (.0110+), -это +6/16, результат операции.

Читателю предлагается самостоятельно повторить этот пример для случая, когда исходные числа поступают в



обратном порядке: (-5/16) + (--11/16). При этом в Начале операции число -5/16 должно поступить в регистр В, а число +11/16 - в регистр С; результат должен получиться, конечно, таким же, как в рассмотренном ранее случае.

3.1.3. Алгебраическое сложение-вычитание в дополнительных кодах. В дополнительных кодах сложение и вычитание выполняются, как правило, проще, чем в прямых кодах. Ради этого, собственно, и используются вообще дополнительные коды.

Для определенности будем полагать, что дополнительный код построен по первому варианту (см. 1.4.2), т. е. что положительные числа содержат в разряде алгебраического знака laquo;О raquo;, а отрицательные - цифру laquo;1 raquo;. Будем считать также, что разряд алгебраического знака является первым разрядом в целой части числа и потому вес его равен -1 (вместо естественного веса +1), а т основных разрядов числа находятся все в дробной части числа *).

При этом все положительные числа будут представлены в двоичной системе чисто позиционным способом, с естественными весами разрядов, с цифрами О, 1 и с запятой, фиксированной перед первым (старшим) из основных разрядов; отличие веса знакового разряда от естественного не играет роли для положительных чисел, так как цифра данного разряда есть laquo;О raquo;. Так как для отрицательных чисел в знаковом разряде содержится laquo;1 raquo;, то в способе изображения отрицательных чисел формально имеется небольшое отступление от естественных весов разрядов.

При использовании дополнительных кодов алгебраическое сложение-вычитание В + С может выполняться следующим методом:

(а) если выполняется вычитание, то обратить код числа С (в том числе изменить и знак С на противоположный);

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

*) В последовательном представлении чисел разряд знака теперь будет следовать после всех остальных разрядов числа (так как он является старшим).



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

Проверим правильность приведенного алгоритма для случая выполнения сложения. Фактически выполнение сложения сводится к простому суммированию содержимого регистров Б и С (п. (а) пропускается). При этом важно только проследить, чтобы при суммировании двух положительных чисел не было переноса в разряд знака, а при суммировании двух отрицательных чисел перенос в разряд знака непременно был (невыполнение этих условий означает переполнение разрядной сетки); при суммировании чисел разных знаков перенос в разряд алгебраического знака Может быть, а может и не быть.

Пусть сначала имеем два положительных числа. При этом, как говорилось, в основных разрядах содержатся их абсолютные величины (В и С ), в разрядах знака - нули. При суммировании получим в основных разрядах величину IБI + \С\; если эта величина меньше единицы (как это и требуется - иначе было бы переполнение), то перенос в разряд знака отсутствует, и при суммировании в этом разряде сохранится нуль (О Н- О О = 0). Таким образом, результат суммирования представляет собой правильный результат сложения двух положительных чисел.

Пусть теперь имеем два отрицательных числа. В основных разрядах при этом содержатся дополнения до единицы от их абсолютных величин (1 - [ Б ) и (1 - С ), в разрядах алгебраических знаков - единицы. При суммировании основных разрядов в них образуется величина

(1-Б1) Ч-(1 - С) = 1 -I- 1 - (БЦ- 1С).

Если бы эта величина была меньше единицы, то это означало бы, что I Б 1 -Ь IС I gt; 1, т. е. имели бы переполнение разрядной сетки. Нормально, когда Б-1-С lt;1, результат суммирования в основных разрядах больше единицы; поэтому в основных разрядах остается величина 1-( Б С )



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