Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Деление двоичных чисел в эвм

61K
25 ноября 2011 года
TauRN7
24 / / 30.12.2010
А именно интересует деление в обратном модифицированном коде.
[COLOR="silver"] Во всей сети нашел лишь одну статью пытающуюся каким-то образом расписать решение, но вот результаты их делений не совпадают с действительностью.[/COLOR]

Если не жалко, просьба поделитесь знаниями.
к примеру хотелось бы рассмотреть процесс деления 96 на 3.
360
25 ноября 2011 года
P*t*
474 / / 15.02.2007
Вопрос непонятнен. По крайней мере мне непонятен. Что значит обратный модифицированный код? Что значит рассмотреть процесс деления? Рассказать, как нужно делить в столбик?
61K
25 ноября 2011 года
TauRN7
24 / / 30.12.2010
Цитата: P*t*
Вопрос непонятнен. По крайней мере мне непонятен. Что значит обратный модифицированный код? Что значит рассмотреть процесс деления? Рассказать, как нужно делить в столбик?



Обратный код — метод вычислительной математики, позволяющий вычесть одно число из другого, используя только операцию сложения над натуральными числами.

Рассмотреть процесс деления - хотелось бы увидеть процесс деления именно по действиям, а не сразу результат.

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

277
25 ноября 2011 года
arrjj
1.7K / / 26.01.2011
изначально умнажалось и делилось "в столбик" только немного по другому (на примере 9*5 1001*101)
 
Код:
1001
*     101
------------
     1001 (1001*1)
+      0  (1001*0)
+  1001   (1001*1)
------------
   101101

Приблизительный алгоритм "компьютерной" реализации (101 - множитель1, 1001 - множитель2):
1.очистить результат
2.цикл по битам множитель1
3.побитовый сдвиг результата в лево на 1 (или множителя1 вправо)
4.если множитель1.битN=1
прибавить к результат множитель2
5.продолжить цикл
с делением тоже только наоборот.

А обратный, дополнительный и пр. код, описание которых вы взяли с википедии лишь позволяют за счёт особенностей хранения чисел в памяти оптимизировать эти алгоритмы.

Ну а вот статейка которая вам доступно всё объяснит.
360
25 ноября 2011 года
P*t*
474 / / 15.02.2007
Цитата: TauRN7

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



Какое-то имею :-)
По сути это и есть деление в столбик, но с оптимизацией под конкретные доступные процессорные команды.

61K
25 ноября 2011 года
TauRN7
24 / / 30.12.2010
система деления как нам объяснял горе преподаватель такова, показываю на примере 96 на 3:
А(делимое) =96(10) =1100000(2) = 001100000(2д.м.)
Б(делитель) =3(10) =11(2) =0011(2д.м.)
-Б(2д.о.м.) =1101

в получившемся делимом имеет n-знаков, в регистре(т.е. том месте где собсна будет записан ответ), должно быть n-2. На чем всё это основывается - хз.
далее само решение:
000000000 | 0000000
-------------------------------
[COLOR="royalblue"]0[/COLOR]01100000 | 0000000
+([COLOR="royalblue"]-Б[/COLOR]):
110100000
-------------------------------
[COLOR="red"]0[/COLOR]00000000 | 000000[COLOR="red"]1[/COLOR]
<-сдвиг:
[COLOR="royalblue"]0[/COLOR]00000000
+([COLOR="royalblue"]-Б[/COLOR]):
110100000
-------------------------------
[COLOR="red"]1[/COLOR]10100000 |0000001[COLOR="red"]0[/COLOR]
<-сдвиг:
[COLOR="royalblue"]1[/COLOR]01000000
[COLOR="royalblue"]+Б[/COLOR]:
001100000
-------------------------------
[COLOR="red"]1[/COLOR]10100000 | 000010[COLOR="red"]0[/COLOR]
<-сдвиг:
[COLOR="royalblue"]1[/COLOR]01000000
[COLOR="royalblue"]+Б[/COLOR]:
001100000
-------------------------------
.
. и т.д. как видете алгоритм будет повторяться пока "реестр" не переполнится.
.
-------------------------------
[COLOR="red"]1[/COLOR]10100000 | 100000[COLOR="red"]0[/COLOR]
<-сдвиг:
[COLOR="royalblue"]1[/COLOR]01000000
[COLOR="royalblue"]+Б[/COLOR]:
001100000
-------------------------------

По сути на этом и заканчивается "деление" пока не переполнится регистр либо пока делить уже будет нечего.
Но вот в чем проблема 1000000(2) это 64(10), а ответ д/б 32(10), как Вы понимаете. Отсюда следует что где-то не правильно либо понят, либо объяснён материал.
Отсюда вопрос - сколько раз нужно производить подобную операцию - до окончательного получения результата?

ПС: я не спроста написал именно поделиться знаниями. расшарить пару ссылок любой может.
14
26 ноября 2011 года
Phodopus
3.3K / / 19.06.2008
Я в вашем алгоритме ничего не понял, потрудитесь хоть прокомментировать. Даже сопоставить с найденными алгоритмами не смог :). И откуда термины то такие "обратном модифицированном коде"? Это называется просто обратный код (дополнение до 2х).
61K
26 ноября 2011 года
TauRN7
24 / / 30.12.2010
Цитата: Phodopus
Я в вашем алгоритме ничего не понял, потрудитесь хоть прокомментировать. Даже сопоставить с найденными алгоритмами не смог :). И откуда термины то такие "обратном модифицированном коде"? Это называется просто обратный код (дополнение до 2х).



ну вы только что сами и ответили на свой вопрос о происхождение определения.

пожалуйста, можете посмотреть его объяснение http://www.youtube.com/watch?feature=player_embedded&v=19wzwy1PoJI

287
26 ноября 2011 года
Shiizoo
958 / / 14.03.2004
У нас на теории цифровых автоматов тоже был в том числе и обратный модифицированный код. Правда отличие было, по-моему, лишь в том, что знак расширялся до двух разрядов.

Погуглил - знаковых разряда два и наличие знака это "11" в знаковой паре разрядов. Да, было такое :) За отсутствием практики из башки все повылетало (ну один раз запрогал CPU-подобный калькулятор на VHDL ^_^, за все время учебы то).

Если найду лекции и там есть что-то подробное, выложу :)

--added

Посмотрел видео с преподом. Блин, убивает просто, почему в 21 веке мы до сих пор ковыряемся с доской и мелом, каждый раз на лекциях заново выписывая примеры, правя ошибки по невнимательности. Сколько еще будем расти до заранее готовых, наглядных и эффективных презентаций с нормальным сопровождением. =\

p. s. у нас на кафедре был проектор, но в учебном процессе по первому высшему не использовался xDD
61K
26 ноября 2011 года
TauRN7
24 / / 30.12.2010
Цитата: Shiizoo

Посмотрел видео с преподом. Блин, убивает просто, почему в 21 веке мы до сих пор ковыряемся с доской и мелом, каждый раз на лекциях заново выписывая примеры, правя ошибки по невнимательности. Сколько еще будем расти до заранее готовых, наглядных и эффективных презентаций с нормальным сопровождением. =\



Это бездонно обсуждаемая тема)

Буду признателен за лекции =)

А также буду признателен тому кто всё таки выложит пример именно деления а не "умножения только всё наоборот" =\

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог