Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.013 c
2-1135263657
kotbazilio
2005-12-22 18:00
2006.01.15
StringGrid


14-1135089618
(CHALING 32)S K i N E R
2005-12-20 17:40
2006.01.15
Трафик!


2-1135497257
Kot_
2005-12-25 10:54
2006.01.15
Вставка авто суммы в MS Word


2-1135416301
RX
2005-12-24 12:25
2006.01.15
Почему не заходит в Брейк ?


14-1134582151
Knight
2005-12-14 20:42
2006.01.15
Как лучше организовать подключение пользователей к своей тарелке?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский