Опубликован: 30.03.2005 | Уровень: специалист | Доступ: платный | ВУЗ: Национальный исследовательский ядерный университет «МИФИ»
Лекция 8:

Модифицированные коды

< Лекция 7 || Лекция 8: 123 || Лекция 9 >

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


То есть при сдвиге вправо отрицательного числа старшие разряды заполняются единицами. При сдвиге влево в старшие и младшие разряды пишутся единицы.

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

Умножение с младших разрядов в дополнительном коде

Алгоритм:

[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
< Лекция 7 || Лекция 8: 123 || Лекция 9 >
Жаксылык Несипов
Жаксылык Несипов
Людмила Долгих
Людмила Долгих

Здравствуйте. В первой лекции курса "Логические и арифметические основы и принципы работы ЭВМу вас приведена классическая структурная схема ЭВМ. Если можно уточните, а как в классической архитектуре могла реализоваться прямая работа устройств ввода-вывода с оперативной памятью?  Если я правильно понимаю - это режим прямого доступа к памяти, в классической архитектуре он не предусмотрен.

Семён Огай
Семён Огай
Казахстан, Алматы
Виталий Лусников
Виталий Лусников
Россия, Омутнинск

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7416103531648watchdog( )../bootstrap.inc:0
23.7419103534128module_invoke( )../bootstrap.inc:967
33.7419103535984call_user_func_array ( )../module.inc:462
43.7419103536320devel_watchdog( )../module.inc:462
53.7420103537168decode_entities( )../devel.module:382
63.7420103539088drupal_error_handler( )../devel.module:340
73.7421103542712watchdog( )../common.inc:663
83.7421103544816module_invoke( )../bootstrap.inc:967
93.7421103546696call_user_func_array ( )../module.inc:462
103.7421103547048devel_watchdog( )../module.inc:462
113.7422103547752decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7416103531648watchdog( )../bootstrap.inc:0
23.7419103534128module_invoke( )../bootstrap.inc:967
33.7419103535984call_user_func_array ( )../module.inc:462
43.7419103536320devel_watchdog( )../module.inc:462
53.7420103537168decode_entities( )../devel.module:382
63.7420103539088drupal_error_handler( )../devel.module:340
73.7421103542712watchdog( )../common.inc:663
83.7421103544816module_invoke( )../bootstrap.inc:967
93.7421103546696call_user_func_array ( )../module.inc:462
103.7421103547048devel_watchdog( )../module.inc:462
113.7422103547752decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7416103531648watchdog( )../bootstrap.inc:0
23.7419103534128module_invoke( )../bootstrap.inc:967
33.7419103535984call_user_func_array ( )../module.inc:462
43.7419103536320devel_watchdog( )../module.inc:462
53.7420103537168decode_entities( )../devel.module:382
63.7428103539280drupal_error_handler( )../devel.module:340
73.7428103542976watchdog( )../common.inc:663
83.7428103545080module_invoke( )../bootstrap.inc:967
93.7428103546960call_user_func_array ( )../module.inc:462
103.7428103547312devel_watchdog( )../module.inc:462
113.7429103548096decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7416103531648watchdog( )../bootstrap.inc:0
23.7419103534128module_invoke( )../bootstrap.inc:967
33.7419103535984call_user_func_array ( )../module.inc:462
43.7419103536320devel_watchdog( )../module.inc:462
53.7420103537168decode_entities( )../devel.module:382
63.7428103539280drupal_error_handler( )../devel.module:340
73.7428103542976watchdog( )../common.inc:663
83.7428103545080module_invoke( )../bootstrap.inc:967
93.7428103546960call_user_func_array ( )../module.inc:462
103.7428103547312devel_watchdog( )../module.inc:462
113.7429103548096decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7435103532192watchdog( )../bootstrap.inc:0
23.7435103534272module_invoke( )../bootstrap.inc:967
33.7435103536128call_user_func_array ( )../module.inc:462
43.7435103536464devel_watchdog( )../module.inc:462
53.7436103537168decode_entities( )../devel.module:382
63.7436103539088drupal_error_handler( )../devel.module:340
73.7436103542704watchdog( )../common.inc:663
83.7436103544808module_invoke( )../bootstrap.inc:967
93.7437103546688call_user_func_array ( )../module.inc:462
103.7437103547040devel_watchdog( )../module.inc:462
113.7437103547744decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7435103532192watchdog( )../bootstrap.inc:0
23.7435103534272module_invoke( )../bootstrap.inc:967
33.7435103536128call_user_func_array ( )../module.inc:462
43.7435103536464devel_watchdog( )../module.inc:462
53.7436103537168decode_entities( )../devel.module:382
63.7436103539088drupal_error_handler( )../devel.module:340
73.7436103542704watchdog( )../common.inc:663
83.7436103544808module_invoke( )../bootstrap.inc:967
93.7437103546688call_user_func_array ( )../module.inc:462
103.7437103547040devel_watchdog( )../module.inc:462
113.7437103547744decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7435103532192watchdog( )../bootstrap.inc:0
23.7435103534272module_invoke( )../bootstrap.inc:967
33.7435103536128call_user_func_array ( )../module.inc:462
43.7435103536464devel_watchdog( )../module.inc:462
53.7436103537168decode_entities( )../devel.module:382
63.7442103539280drupal_error_handler( )../devel.module:340
73.7442103542976watchdog( )../common.inc:663
83.7442103545080module_invoke( )../bootstrap.inc:967
93.7442103546960call_user_func_array ( )../module.inc:462
103.7442103547312devel_watchdog( )../module.inc:462
113.7443103548096decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7435103532192watchdog( )../bootstrap.inc:0
23.7435103534272module_invoke( )../bootstrap.inc:967
33.7435103536128call_user_func_array ( )../module.inc:462
43.7435103536464devel_watchdog( )../module.inc:462
53.7436103537168decode_entities( )../devel.module:382
63.7442103539280drupal_error_handler( )../devel.module:340
73.7442103542976watchdog( )../common.inc:663
83.7442103545080module_invoke( )../bootstrap.inc:967
93.7442103546960call_user_func_array ( )../module.inc:462
103.7442103547312devel_watchdog( )../module.inc:462
113.7443103548096decode_entities( )../devel.module:382