Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.15;
Скачать: CL | DM;

Вниз

Умножение двоичных чисел.   Найти похожие ветки 

 
KEBZ   (2005-12-25 18:56) [0]

Уважаемые Мастера подскажите плиз: В чём заключается Особенности умножение двоичных чисел? зарание СПС


 
Fay ©   (2005-12-25 19:08) [1]

2 KEBZ   (25.12.05 18:56)
Не бывает двоичных чисел. Бывает только их двоичная запись.
В остальном - как в школе.


 
KEBZ   (2005-12-25 19:10) [2]

Особенности умножение двоичных чисел в ЭВМ - такой вот вапрос в метадички. гарю ва вторник нада здать иначе не попаду на сваю 1рвую сесию :(


 
Джо ©   (2005-12-25 22:39) [3]

Таблица умножения для двоичных чисел выглядит след. образом:
0 * 0 = 0
0 * 1 = 0
1 * 0 = 0
1 * 1 = 1


 
evvcom ©   (2005-12-26 09:16) [4]

Ему еще потребуется сложение:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10
Не правда ли, удивительно?


 
tesseract ©   (2005-12-26 10:18) [5]

ДА и  побитого умножить=И (and), побитого сложить=ИЛИ(Or).

Умножение в машине выполняется н-м количеством сложения чисел. Т.К. Аппаратно в процессоре реализован только сумматор.

Для перевода чисел из двоично-десятичного кода в двоичный также присутствует Dec-корректор.

Вычитание сложнее - вычитаемое следует предварительно перевести в обратный код. (см про сумматор).

Про деление что-то забыл (ОЦС было 5 лет назад).


 
wal ©   (2005-12-26 10:23) [6]


> Т.К. Аппаратно в процессоре реализован только сумматор.
Не уверен. Наверное помощней что-то.

> Для перевода чисел из двоично-десятичного кода в двоичный
> также присутствует Dec-корректор.
Не думаю, что кого-то сейчас интересует BCD на таком уровне.

> Про деление что-то забыл (ОЦС было 5 лет назад).
Судя по тому, что умножение у тебя выполняется набором сложений, деление должно быть набором вычитаний.

С уважением.


 
evvcom ©   (2005-12-26 10:41) [7]


> Умножение в машине выполняется н-м количеством сложения
> чисел. Т.К. Аппаратно в процессоре реализован только сумматор.

Ты про какой процессор говоришь? Интел давно умеет целочисленно умножать/делить, ну а с ПТ сначала сопроцессор работал, а потом и его встроили в МП.


 
The_scorpion ©   (2005-12-26 12:31) [8]


> ну а с ПТ сначала сопроцессор работал

Сопроцессор нужен только для перераспределения операций, принцип умножения чисел с ПТ и целочисленных идентичен.

> Ты про какой процессор говоришь? Интел давно умеет целочисленно
> умножать/делить, ну а с ПТ сначала сопроцессор работал,
> а потом и его встроили в МП.

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


 
The_scorpion ©   (2005-12-26 12:33) [9]


> Судя по тому, что умножение у тебя выполняется набором сложений,
>  деление должно быть набором вычитаний.

И деление и умножение выполняется сложением + операции сдвига


 
evvcom ©   (2005-12-26 13:17) [10]


> этого более чем достаточно

никто и не спорит, что этого не достаточно.

> ЦП не умеет умножать

А команды MUL, IMUL ассемблера (например, http://z80.msk.ru/nasmdoc/nasmdoca.html#section-A.107) это что по-твоему? Что там проц делает внутри, это его проблемы, наверняка выполняет сдвиги и сложения, но в итоге умножает-то он сам, а не алгоритм пользователя.


 
tesseract ©   (2005-12-26 16:11) [11]

>>to evvcom

> Что там проц делает внутри, это его проблемы, наверняка
> выполняет сдвиги и сложения, но в итоге умножает-то он сам,
>  а не алгоритм пользователя.


Ты тему читал?


> Особенности умножение двоичных чисел в ЭВМ - такой вот вапрос
> в метадички.


>>to  The_scorpion

Давно было не помню. Помню только что существует исключительно компаратор (один или несколько) которым на вход подают данные.


> , принцип умножения чисел с ПТ и целочисленных идентичен.


Не совсем. ПТ сначала делятся на целую/дробную части и обрабатываются в два прохода (в методичке 94г. про наш КР).

Вот эти операции сопроцессор и выполняет.


 
evvcom ©   (2005-12-26 16:42) [12]


> Ты тему читал?

Читал. Только причем здесь тема? Эта ответвление спора пошло после фразы
> Аппаратно в процессоре реализован только сумматор
А к теме естественно это не относится.


 
The_scorpion ©   (2005-12-26 17:58) [13]


> команды MUL, IMUL ассемблера

Ты меня хочешь удивить?...:))) Думаешь я с ассемблером не знаком?...:)))


> там проц делает внутри, это его проблемы

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


> ПТ сначала делятся на целую/дробную части

Это что-то новое в теории эвм.
При умножении происходит выравнивание мантис, потом все как с целыми числами.


 
The_scorpion ©   (2005-12-26 18:14) [14]


> компаратор (один или несколько) которым на вход подают данные.

Это сильная фраза...мне всегда казалось что данные передают регистры или триггеры(что в принципе одно и тоже)...


 
Игорь Шевченко ©   (2005-12-26 18:21) [15]


>  такой вот вапрос в метадички. гарю ва вторник нада здать


Не сдашь.


 
Набережных С. ©   (2005-12-26 20:06) [16]


> The_scorpion ©   (26.12.05 17:58) [13]


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

Первый воплощенный в железо "умножеметр" лично я увидел в году так 84м или 85м, но это не значит, что до того они не существовали, просто мне не попадались. Собран он был за 133-й серии из сумматоров и мультиплексоров. Перемножал 12-тиразрядное число на 4-хразрядное, двоичные, так от него требовалось. Сумматоры были включены каскадно, короткий сомножитель управлял мультиплексорами. Первый слой суммировал длинный сомножитель либо с собой, либо с нулем, в зависимости от младшего разряда короткого. Второй слой - результат первого слоя либо со сдвинутым и дополненным справа нулями длинным, либо опять с нулем. И так далее. Умножал за один такт, правда частота была 3 МГц, но это ограничение микросхем. Как-то примерно так, если не забыл чего. Засунуть нечто подобное в микропроцессор - дело несложное.

> The_scorpion ©   (26.12.05 18:14) [14]


> Это сильная фраза...мне всегда казалось что данные передают
> регистры или триггеры(что в принципе одно и тоже)...

Есть такие микросхемы - цифровые компараторы, на вход подаются два числа, имеют обычно три выхода - больше, меньше, равно. Давно уже есть...
На вскидку - 555СП1


 
tesseract ©   (2005-12-26 20:33) [17]


> При умножении происходит выравнивание мантис, потом все
> как с целыми числами.


Я неправильно выразился :-) Выполняется действие, потом отделяется дробная часть.


> Это сильная фраза...мне всегда казалось что данные передают
> регистры или триггеры(что в принципе одно и тоже)...


Триггеры данные не передают - они их хранят. А регистры это аппаратно триггеры с разрядностью равной разрядности процессора.  А данные надо подать на аппаратную часть, равную разрядности процессора. Если данные не сооветсвую разрядности АЛУ, то их надо преобразовать. Отсюда проблема 4-байтного выравнивания до разрядности (напр чтобы байт стал именно байтом, а не int32 его надо засунуть в packed record) дабы процессор не трудился разбивая последовательность байт+int16+int32+байт  по регистрам.


> Как-то примерно так, если не забыл чего. Засунуть нечто подобное в
> микропроцессор - дело несложное.


Никто и не говорит об отсутсвии такого блока в АЛУ. Но в конечном итоге, это набор сумматоров, и если следить дальше дойдешь до набора компараторов :-).

Да и неспроста операции умножения рекомендуется заменить сложением или сдвигом. Приходится ведь задействавать  сопроцессор что тормознее.


 
Набережных С. ©   (2005-12-26 21:06) [18]


> tesseract ©   (26.12.05 20:33) [17]


> Никто и не говорит об отсутсвии такого блока в АЛУ. Но в
> конечном итоге, это набор сумматоров, и если следить дальше
> дойдешь до набора компараторов :-).

Ну а если пойти еще дальше, то дойдем до И-НЕ, вентилей, транзисторов, p-n переходов и т.д.:)))
[16] написано по поводу вот этого: "ты сказал  что процессор умеет умножать, а я говорю что нет". Я и описал, как может быть устроен встроенный умножитель, выполняющий умножение без внешней помощи, за один такт. Если такое устройство в процессоре есть, то это и значит, что процессор "умеет умножать", а не заменяет умножение последовательностью сдвигов и элементарных суммирований. Хотя практически в процессорах реализуется комбинированная схема. Если правильно помню, в Pentium команда MUL R8 выполнялась за 4 такта, а в поздних еще меньше, но там уже по-другому считать надо. А перемножает она два 8-миразрядных числа.

> Да и неспроста операции умножения рекомендуется заменить
> сложением или сдвигом. Приходится ведь задействавать  сопроцессор
> что тормознее.

Самое быстрое умножение - через сопроцессор с использованием родного для него типа Double - при сравнимой точности, разумеется.

Но это все-таки оффтоп, давай закруглимся, ага?



Страницы: 1 вся ветка

Текущий архив: 2006.01.15;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.041 c
2-1135329585
SergeyG
2005-12-23 12:19
2006.01.15
Как к программе (проекту) подключить форму ранее разработанной


14-1134772194
Ricks
2005-12-17 01:29
2006.01.15
Графики функций


10-1111376309
msgipss
2005-03-21 06:38
2006.01.15
локальная служба и локальный сервер в dcomcnfg - что это значит?


5-1121066264
DimaK
2005-07-11 11:17
2006.01.15
Хочу сделать также как Object Inspector в D2005


14-1134707455
КаПиБаРа
2005-12-16 07:30
2006.01.15
Почему процветает модель разработки "Тяп ляп"?