Поиск:

Ответ в темуСоздание новой темы Создание опроса
> деление, в двоичном коде 
:(
    Опции темы
_hunter
  Дата 15.2.2005, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



Добрый день.

Подскажите как делить в двоичном коде.
т.е. 100011 / 11

Заранее благодарю за ответ.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
maxim1000
Дата 15.2.2005, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



а как учили в школе? в столбик smile
несколько предположений:
1. делитель больше нуля
2. делимое не меньше 0
алгоритм
1. считаем, сколько цифр будет в результате: сдвигаем делитель влево, как только он стал больше делимого, прекращаем, считаем количество сдвигов, это - количество цифр
2. свигаем делитель вправо
3. определяем цифры: берем наш делитель, максимально сдвинутый влево (в том виде, в котором он остался после 1-го пункта), сравниваем:
3.1. если делимое оказалось больше, выводим, например, на экран 1, отнимаем делитель от делимого
3.2. если делимое оказалось меньше, выводим 0 и все
4. если это была непоследняя цифра, jump (2)

Это сообщение отредактировал(а) maxim1000 - 15.2.2005, 18:20


--------------------
qqq
PM WWW   Вверх
_hunter
Дата 15.2.2005, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



понятно...
думал попроще будет ( мне это на микросхемах собирать ), но и за это спасибо


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
maxim1000
Дата 15.2.2005, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



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

Это сообщение отредактировал(а) maxim1000 - 15.2.2005, 18:28


--------------------
qqq
PM WWW   Вверх
val
Дата 16.2.2005, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: 1
Всего: 7



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


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
_hunter
Дата 16.2.2005, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



вот это точно то, что надо -- легко реализуется даже на сумматоре


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Girder
Дата 16.2.2005, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: нет
Всего: 155



_hunter двоичное деление производится по тем же правилам что и для десятичных чисел. При ентом надо только не забывать о правилах сложения, умножения и вычитаниях двоичных чисел.

К примеру твой пример: 100011 / 11 (см. алгоритм maxim1000 - для наглядности в присоединенном файле)

Это сообщение отредактировал(а) Girder - 16.2.2005, 16:29

Присоединённый файл ( Кол-во скачиваний: 20 )
Присоединённый файл  div2.tif


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
AISIN
Дата 29.4.2005, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: нет
Всего: 1



А если нужно разделить пополам то можно сдвинуть биты в лево. А первый левый бит записать первым правым. Это реально работает! А умножение на 2 нужно наоборот сдвигать!

Это сообщение отредактировал(а) AISIN - 29.4.2005, 21:03
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1033 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.