Stalker17

На Пикабу
193 рейтинг 0 подписчиков 0 подписок 4 поста 0 в горячем
Награды:
5 лет на Пикабу
3

Правильные умножители(окончание)

Чтобы уже закончить тему с умножителями.

Указанные в предыдущей теме(см. Решение головоломки про умножение ) умножители обеспечивают минимальное время выполнения, но к сожалению, трудно расширяемы. То есть для умножения трёхбитных чисел надо придумывать схему почти заново. Даже сами схемы выглядят как-то по кустарному – нет в них что ли симметричности и красоты.

Нужна какая-то ещё идея и такая идея есть. Всем известно устройство дешифратора. На входе оно имеет допустим два проводка, каждый из которых означает бит. На входе уже будет 4 провода, каждый из которых означает комбинацию 00, 01, 10 и 11. После того, как мы получили дешифрацию обоих множителей, нетрудно будет получить и каждый бит произведений в зависимости от множителей причём за один так.

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

Итак логическая схема умножения двух чисел будет представлять из себя следующее

Первый такт (дешифрация)

a11=A(a0,a1)

a10=B(a1,a0)

a01=B(a0,a1)

a00 – нет отдельной линии.

Второй такт(получение результатов умножения)

с3=A(a01,b01) or A(a11,b11)

c2= A(a01,b10) or A(a10,b01) or A(a11,b10) or A(a10,b11)

c1= A(a11,b10)* or A(a10,b11)* or A(a10,b10)

c0=A(a11,b11)*

Где

* - дублирующие линии

A(x,y) - это устройство А, которое на входе получает значения x и y

or – закороченные на выходе провода. Так как мы помним, что по условия у нас 1 сильнее 0

Наглядно, на рисунке это будет выглядеть так.

Правильные умножители(окончание)

Если нам надо перемножить 2 числа на 3 бита, то получим

Четыре бита

Первый такт

a11_=A(a0,a1)

a10_=B(a1,a0)

a01_=B(a0,a1)

a11=A(a2,a3)

a10=B(a3,a2)

a01=B(a2,a3)

Второй такт

a1111=A(a11_,a11)

a1110= A(a11_,a10)

a1100=B( a11* or a10* or a01*,a11_)

a0011= B( a11_* or a10_* or a01_*,a11)

Таким образом за n тактов можно дешифровать 2^n битов.

Получение же результата после дешифровки всегда занимает 1 такт.

Итого, 32 битное умножение будет занимать 6 тактов. А 64 битное – 7 тактов.

Расплатой будет конечно огромное количество элементов, поэтому увы, данную методику всё же надо сочетать с традиционной – суммированием.

Показать полностью 1
4

Решение головоломки про умножение

Забыл, что оказывается так и не опубликовал ответ на свою головоломку.

Вот её условия  -  Небольшая головоломка времён ламп и первых транзисторов.


К сожалению, к своему стыду я не написал, а что будет, если закоротить выходы с 0 и единицей. В то время как правильный ответ, как раз это использует. В своей задаче я неявно подразумевал, что «выход 1» сильнее «выхода 0», то есть «выход 0» , это что-то вроде заземления через сопротивления. Если выходное устройство не пропускает ток, то и будет 0, а пропускает, тогда будет 1. Соответственно, если закоротить два выхода двух идеальных устройств мы получим 1.


Впрочем, если 0 сильнее, тоже ничего страшного. Просто схема будет несколько другая, но она будет выполнять свои действия за то же число тактов. Для предложенного же варианта есть два решения. Одно решение я сразу записал, когда опубликовал задание, второе нашёл чуть позже, когда хотел написать статью с ответом, но там и не написал.


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

Оба варианта схемы выполняют свою работу за два такта. Домашнее задания для любителей головоломок – за сколько тактов будет минимально отрабатывать схема, которая перемножает два трёхбитных числа?

Показать полностью 2
0

Дурак ,это надолго

Решил я как-то в магазине М-Видео купить сушилку для яблок. Покупал я её в магазине. Найдя подходящую , стал радостно использовать её в деле. Прошло три недели. Сушилка внезапно перестала выполнять свою основную функцию то есть греть. Сдать легко товар уже было нельзя, для гарантийного ремонта надо было возиться. Ладно, думаю, хрен с ними, буду покупать в других магазинах.


Прошло несколько лет… Понадобилась мне ещё кое-какая вещь. Дай, думаю, куплю её в МВидео. На этот раз с доставкой. Тем более сумма покупки небольшая, где-то 2200 рублей. И сервис у них оказался хороший. За час до доставки предупреждают, вопросы уточняют. Казалось бы радуйся. Итак, привезли , что я заказывал. Посмотрел товар, вроде подвохов нет. Перед тем, как привезли, я положил в кошелёк 3 бумажки по 2000 рублей(так как я лох, то много наличности не ношу, вдруг чего) . Приехал курьер, я ему дал 2500 рублей, он конечно же говорит , что 300 рублей нет. Потом всё-таки пообещал посмотреть у водителя. Я ему даю бумажку по 2000 и по 500, после чего он приносит сдачи. На этом , довольные друг другом расстаёмся. После чего я смотрю в кошелёк и нахожу там только лишь одну бумажку по 2000 рублей. Скорее всего две бумажки слиплись и были поданы курьеру по цене одной. Впрочем , человек, который даёт две бумажки вместо одной может с таким же успехом положить две бумажки вместо трёх изначально, а то и вовсе выронить :-) .


Вот так я дважды потерял деньги с одним и тем же магазином(с другими так не было) . И в обоих случаях магазин не виноват, а виноват я - первый раз не пошёл качать права с гарантийным ремонтом, а второй и вовсе добровольно отдал большую сумму, хотя меня к этому не принуждали, не гипнотизировали и .т. д. В общем теперь понятно , почему некоторых обувают дважды, трижды и бесконечно. Потому, что сам такой же.

Показать полностью
6

Небольшая головоломка времён ламп и первых транзисторов.

Для любителей решать головоломки вот небольшая головоломка в стиле инженеров полувековой давности. Пусть есть два устройства A и B . Устройство A выдаёт "1" если на входе 1 и входе 2 одновременно тоже единица. В противном случае она на входе выдаёт 0 . Достоверное значение на выходе получается через 1 такт. Устройство B выдаёт "1" если на вход 1 подаётся "0", а на вход 2 подаётся "1". Устройства считаются идеальными - не требуют повторителей и т.д. Допустим у нас есть 2 входных провода a0 и b0. Мы ходит перемножить a0*b0 , понятно, что подключаем эти два провода к устройству A и на выходе получаем результат перемножения. За 1 такт. Теперь вопрос в студию. Пусть есть два двухбитных числа, которые подаются по проводу a0 ,a1 и b0,b1 , на выходе у нас провода c0,с1,с2,с3 (ну допустим c3 младший разряд, а с0 - cтарший, но кому удобнее может и наоборот). Комбинируя провода и устройства A,B нужно получить результат вычисления за наименьшее количество тактов(число устройств не ограничено , но лучше меньше). Головоломка где-то на полчаса , если не подсматривать в учебники, интернет и т.д.
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества