Важная особенность рассмотренных кодов состоит в том, что в процессе выполнения операции сложения-вычитания не происходит переполнения цифровой части числа и переноса в знаковый разряд.
При решении реальных задач часто трудно определить заранее, будет ли сумма двух слагаемых меньше единицы. Во всяком случае, для предотвращения
Рассмотрим такой пример:
X = -0,101 Дополнительный код 1.011 = [X]дк Y= -0,111 1.001 = [Y]дк S- = X- + Y- 0.100 = [S]дк
То есть получаем неправильный результат как по знаку, так и в цифровой части.
Рассмотрим ещё один пример:
X = +0,101 В любом из ранее рассмотренных 0.101 = [X]дк,ок Y = +0,111 кодов имеем 0.111 = [Y]дк,ок S+ = X+ + Y+ 1.100 = [S]дк,ок
То есть и в этом случае происходящее
Можно заметить, что
Таким образом, одним из способов фиксации
Однако такой способ фиксации
Существует другой принцип фиксации
" + " ставится в соответствие 00
" – " ставится в соответствие 11
Тогда, по определению модифицированным дополнительным кодом числа называется

Возникающий в знаковых разрядах перенос теряется. В целом же

Как и в случае простого
Так как в сложении по-прежнему участвуют только числа меньше единицы, то
S = X + Y < 2
Поэтому старший знаковый разряд не может быть искажён переносом из цифровой части числа, с другой стороны, перенос, возникающий при сложении чисел в случае, когда
S = X + Y > 1
искажает младший знаковый разряд.
Несовпадение знаковых разрядов после выполнения операции указывает на факт наличия
При этом различают два типа
01 " - положительное10 " - отрицательное.Первому ставится в соответствие комбинация 01 в знаковых разрядах, а второму – 10.
Примеры
Модифицированный дополнительный код:
а) [X]мдк = 00.101 +00.101
[Y]мдк = 00.111 00.111
[S]мдк = 01.100 – положительное переполнение
б) [X]мдк = 11.101 +11.101
[Y]мдк = 11.001 11.001
[S]мдк = 1х10.110 – отрицательное переполнение
Модифицированный обратный код
а) [X]мок = 00.101 +00.101
[Y]мок = 00.111 00.111
[S]мок = 01.100 – положительное переполнение
б) [X]мок = 11.010 +11.010
[Y]мок = 11.000 11.000
1|10.010
------>1
[S]мок = 10.011 – отрицательное переполнение
Пусть два числа X и Y представлены с
[X]пк = sign X.x1x2...xn – множимое [Y]пк = sign Y.y1y2...yn – множитель
Представим множитель в виде:
[Y]пк = sign Y. (y1*2-1 + y2*2-2 + ... + yn*2-n)
Тогда:
[Z]пк = [X]пк*[Y]пк = sign Z. |X| (y1*2-1 + y2*2-2 + ... + yn*2-n) = = sign Z. (|X|*y1*2-1 + |X|*y2*2-2 + ... + |X|*yn*2-n) = = sign Z. (|X|*2-1*y1 + |X|*2-2*y2 + ... + |X|*2-n*yn)
Это есть аналитическая запись алгоритма умножения двух чисел, начиная со старших разрядов множителя.
Алгоритм:
Знак произведения находится независимо от получения цифровой части по формуле:
$$sign\ Z = sign\ X \oplus sign\ Y$$Пример:

Видно, что в общем случае нужно иметь для точного результата сетку с числом разрядов, равным сумме разрядностей сеток сомножителей.
Если нужно получать произведение с точностью не хуже, чем 2-n, то достаточно иметь не удвоенную величину разрядной сетки, а лишь увеличенную на
d = log2n разрядов
Напишем выражение для произведения двух чисел в несколько изменённом виде, а именно:
[Z]пк = [X]пк*[Y]пк = = sign Z.(|X|*y1*2-1 + |X|*y2*2-2 +... + |X|*yn*2-n) = = sign Z.( |X|*2-1*y1 + 2-1 (|X|*2-1*y2 + 2-1 (|X|*2-1*y3 + (...)))) = = sign Z. ((...(( |X|*yn*2-1 + |X|*yn-1)2-1 + |X|*yn-2)2-1 + ... + + |X|*y2 )2-1 + |X|*y1 )*2-1
Это выражение называется преобразованием по
Таким образом, для умножения должна выполняться следующая последовательность действий:
Пример:
$$sign\ Z= 1 \oplus 1 = 0\\
Z_{пк} = 0.10000100$$
Для получения произведения с точностью не ниже, чем 2-n нужно иметь только "n"– разрядную сетку.
Итак, видим, что для получения произведения как при умножении со старших,так и младших разрядов необходимо выполнять две
Однако, известно, что числа могут быть представлены в различных кодах(это, прежде всего, отрицательные числа).
Мы уже знаем, как выполняется операция суммирования чисел (в том числе и с разными знаками).
Однако микрооперация сдвига имеет некоторые особенности:

Сдвиг вправо:

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

То есть при сдвиге вправо отрицательного числа старшие разряды заполняются единицами. При сдвиге влево в старшие и младшие разряды пишутся единицы.
Пользуясь аналогичными правилами, нетрудно установить, что при сдвиге влево отрицательного числа в модифицированном
Алгоритм:
[Z]дк = (...(0+[X]дк*[yn+1 – yn])*2-1 + [X]дк*[yn – yn-1])*2-1 + ... ... + [X]дк*[y2 – y1])*2-1 + [X]дк*[y1 – y0]
Если yn = yn+ 1 , то производится сдвиг частичного произведения.
Если yn = 0 и yn+1 = 1, то к частичному произведению прибавляется [X]дк
Если yn = 1 и yn+1 = 0, то из частичного произведения вычитается [X]дк.
Пример:
[Z]дк = [X]дк*[Y]дк = [X]дк*(y1 – y0 ) + [X]дк*(y2 – y1 )*2-1 + ... + + [X]дк*(yn+1 – yn )*2-n

[-X]дк = 1.01011
[Z]дк = [-X]дк + [X]*2-1 + [X]дк*2-2*0 + [-X]дк*2-3 +
+ [X]дк*2-4 + [-X]дк*2-5
+1.01011 [-X]дк 0.010101 [X]дк*2-1 ________ +1.101011 1.11101011 [-X]дк*2-3 __________ +1.10010111 0.000010101 [X]дк*2-4 ___________ +1.101000011 1.1111101011 [-X]дк*2-5 ____________ 1.1001110001 Ответ: [Z]дк = 1.1001110001
Важная особенность рассмотренных кодов состоит в том, что в процессе выполнения операции сложения-вычитания не происходит переполнения цифровой части числа и переноса в знаковый разряд.
При решении реальных задач часто трудно определить заранее, будет ли сумма двух слагаемых меньше единицы. Во всяком случае, для предотвращения
Рассмотрим такой пример:
X = -0,101 Дополнительный код 1.011 = [X]дк Y= -0,111 1.001 = [Y]дк S- = X- + Y- 0.100 = [S]дк
То есть получаем неправильный результат как по знаку, так и в цифровой части.
Рассмотрим ещё один пример:
X = +0,101 В любом из ранее рассмотренных 0.101 = [X]дк,ок Y = +0,111 кодов имеем 0.111 = [Y]дк,ок S+ = X+ + Y+ 1.100 = [S]дк,ок
То есть и в этом случае происходящее
Можно заметить, что
Таким образом, одним из способов фиксации
Однако такой способ фиксации
Существует другой принцип фиксации
" + " ставится в соответствие 00
" – " ставится в соответствие 11
Тогда, по определению модифицированным дополнительным кодом числа называется

Возникающий в знаковых разрядах перенос теряется. В целом же

Как и в случае простого
Так как в сложении по-прежнему участвуют только числа меньше единицы, то
S = X + Y < 2
Поэтому старший знаковый разряд не может быть искажён переносом из цифровой части числа, с другой стороны, перенос, возникающий при сложении чисел в случае, когда
S = X + Y > 1
искажает младший знаковый разряд.
Несовпадение знаковых разрядов после выполнения операции указывает на факт наличия
При этом различают два типа
01 " - положительное10 " - отрицательное.Первому ставится в соответствие комбинация 01 в знаковых разрядах, а второму – 10.
Примеры
Модифицированный дополнительный код:
а) [X]мдк = 00.101 +00.101
[Y]мдк = 00.111 00.111
[S]мдк = 01.100 – положительное переполнение
б) [X]мдк = 11.101 +11.101
[Y]мдк = 11.001 11.001
[S]мдк = 1х10.110 – отрицательное переполнение
Модифицированный обратный код
а) [X]мок = 00.101 +00.101
[Y]мок = 00.111 00.111
[S]мок = 01.100 – положительное переполнение
б) [X]мок = 11.010 +11.010
[Y]мок = 11.000 11.000
1|10.010
------>1
[S]мок = 10.011 – отрицательное переполнение
Пусть два числа X и Y представлены с
[X]пк = sign X.x1x2...xn – множимое [Y]пк = sign Y.y1y2...yn – множитель
Представим множитель в виде:
[Y]пк = sign Y. (y1*2-1 + y2*2-2 + ... + yn*2-n)
Тогда:
[Z]пк = [X]пк*[Y]пк = sign Z. |X| (y1*2-1 + y2*2-2 + ... + yn*2-n) = = sign Z. (|X|*y1*2-1 + |X|*y2*2-2 + ... + |X|*yn*2-n) = = sign Z. (|X|*2-1*y1 + |X|*2-2*y2 + ... + |X|*2-n*yn)
Это есть аналитическая запись алгоритма умножения двух чисел, начиная со старших разрядов множителя.
Алгоритм:
Знак произведения находится независимо от получения цифровой части по формуле:
$$sign\ Z = sign\ X \oplus sign\ Y$$Пример:

Видно, что в общем случае нужно иметь для точного результата сетку с числом разрядов, равным сумме разрядностей сеток сомножителей.
Если нужно получать произведение с точностью не хуже, чем 2-n, то достаточно иметь не удвоенную величину разрядной сетки, а лишь увеличенную на
d = log2n разрядов
Напишем выражение для произведения двух чисел в несколько изменённом виде, а именно:
[Z]пк = [X]пк*[Y]пк = = sign Z.(|X|*y1*2-1 + |X|*y2*2-2 +... + |X|*yn*2-n) = = sign Z.( |X|*2-1*y1 + 2-1 (|X|*2-1*y2 + 2-1 (|X|*2-1*y3 + (...)))) = = sign Z. ((...(( |X|*yn*2-1 + |X|*yn-1)2-1 + |X|*yn-2)2-1 + ... + + |X|*y2 )2-1 + |X|*y1 )*2-1
Это выражение называется преобразованием по
Таким образом, для умножения должна выполняться следующая последовательность действий:
Пример:
$$sign\ Z= 1 \oplus 1 = 0\\
Z_{пк} = 0.10000100$$
Для получения произведения с точностью не ниже, чем 2-n нужно иметь только "n"– разрядную сетку.
Итак, видим, что для получения произведения как при умножении со старших,так и младших разрядов необходимо выполнять две
Однако, известно, что числа могут быть представлены в различных кодах(это, прежде всего, отрицательные числа).
Мы уже знаем, как выполняется операция суммирования чисел (в том числе и с разными знаками).
Однако микрооперация сдвига имеет некоторые особенности:

Сдвиг вправо:

Сдвиг влево возможен только в случае, если сдвинутое число меньше единицы по модулю:
Исходные числа:

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

То есть при сдвиге вправо отрицательного числа старшие разряды заполняются единицами. При сдвиге влево в старшие и младшие разряды пишутся единицы.
Пользуясь аналогичными правилами, нетрудно установить, что при сдвиге влево отрицательного числа в модифицированном
Алгоритм:
[Z]дк = (...(0+[X]дк*[yn+1 – yn])*2-1 + [X]дк*[yn – yn-1])*2-1 + ... ... + [X]дк*[y2 – y1])*2-1 + [X]дк*[y1 – y0]
Если yn = yn+ 1 , то производится сдвиг частичного произведения.
Если yn = 0 и yn+1 = 1, то к частичному произведению прибавляется [X]дк
Если yn = 1 и yn+1 = 0, то из частичного произведения вычитается [X]дк.
Пример:
[Z]дк = [X]дк*[Y]дк = [X]дк*(y1 – y0 ) + [X]дк*(y2 – y1 )*2-1 + ... + + [X]дк*(yn+1 – yn )*2-n

[-X]дк = 1.01011
[Z]дк = [-X]дк + [X]*2-1 + [X]дк*2-2*0 + [-X]дк*2-3 +
+ [X]дк*2-4 + [-X]дк*2-5
+1.01011 [-X]дк 0.010101 [X]дк*2-1 ________ +1.101011 1.11101011 [-X]дк*2-3 __________ +1.10010111 0.000010101 [X]дк*2-4 ___________ +1.101000011 1.1111101011 [-X]дк*2-5 ____________ 1.1001110001 Ответ: [Z]дк = 1.1001110001
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.