Форум: "Начинающим";
Текущий архив: 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