Тёмный

Сумматор с функцией вычитания 

BitFlip
Подписаться 4,5 тыс.
Просмотров 8 тыс.
50% 1

В этом ролике разберем, как можно вычитать двоичные числа. Рассмотрим обратный и дополнительный код двоичного числа (или первое и второе дополнение, как их еще называют). На основе этих знаний модифицируем наш четырехбитный сумматор для поддержки функции вычитания.
Без хорошего понимания некоторой теоретической информации очень сложно понять принцип работы реализованной цепи для вычитания чисел. Поэтому теории в этом видео больше, чем обычно. Будьте к этому готовы и приятного просмотра :)

Наука

Опубликовано:

 

26 фев 2020

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 41   
@arthur29j
@arthur29j 3 года назад
Поспал на паре и потому до просмотра видео сидел и тупил над лабой)) Спасибо за помощь!
@polymorph5067
@polymorph5067 3 года назад
18:16 Отлично объяснил. До этого не мог понять, зачем нужно было подавать 1 на вход переноса для 1 - го сумматора
@nafis9908
@nafis9908 4 года назад
Хорошо обьяснил, молодец!
@alexator22
@alexator22 3 года назад
Идеально всё объяснил. Спасибо огромное!
@allex6829
@allex6829 Год назад
Спасибо за видео, весь интернет перерыл в поисках этого ролика, не мог смириться с мыслью, что не знаю как дополнительный код реализован. И ты в курсе откуда флаг Sub передается ? откуда он знает что с числом делать?
@filkapali8395
@filkapali8395 Год назад
Офигеть, я понял😧 Спасибо!!!!
@user-sl4lh9ep8c
@user-sl4lh9ep8c 3 года назад
Отлично!
@user-sd4pv6bc8v
@user-sd4pv6bc8v 3 года назад
Привет. Видосы огонь. А есть списочек всего необходимого?)
@per99
@per99 Год назад
Спасибо, теперь я понял
@user-vk2ik1uh1j
@user-vk2ik1uh1j 2 месяца назад
Можно отслживать заживание раны на указательном пальце)
@juliaryabchikova9593
@juliaryabchikova9593 2 года назад
Уважуха тебе
@khusniddinturgunov6589
@khusniddinturgunov6589 Год назад
Спасибо.
@N1047.
@N1047. 6 месяцев назад
А как представить отрицательное число для декора? Например -2¹⁰ у меня это получается 14¹⁰ при декодировании. Как пример в конце с двойкой 1110² декодер переводит как 14, а не -2
@user-sd4pv6bc8v
@user-sd4pv6bc8v 3 года назад
Народ! Какие провода для перемычек подходят?
@dvigatelist3834
@dvigatelist3834 3 года назад
А как быть когда в результате вычитания получается отрицательное число? 5-7 = -2 например.
@BitFlipChannel
@BitFlipChannel 3 года назад
Для отрицательных чисел мы используем дополнительный код для двоичных чисел. С помощью него мы можем выражать отрицательные числа. В ролике этот момент объясняется.
@Mistarbist1984
@Mistarbist1984 3 года назад
Можно не убирая пятый бит сделать так чтобы при включении вычитания тот игнорировал пятый бит
@user-yx4bo6qo9x
@user-yx4bo6qo9x 3 года назад
как отличить -4 от 12? ведь если мы представим -4 в доп коде (0100 - 4, 1011 - 4 в обратном коде, 1100 - 4 в дополнительном коде). По сути дела ничего не меняется что 4 - 4 = 0, что 4 + 12 = 16, а раз 5-й бит мы отбрасываем, то = 0.
@BitFlipChannel
@BitFlipChannel 3 года назад
4 бита позволяют получить 16 разных двоичных значений: от 0000 до 1111. Мы заранее должны определиться, нужны нам отрицательные числа для наших вычислений или нет. Если нужны, то с помощью 4-ех бит мы можем выразить лишь значения от -8 до 7 - всего 16 чисел, для каждого из которого у нас будет уникальная последовательности бит. В этом случае мы не можем выразить число 12. Если же мы хотим работать только с положительными числами, то с помощью тех же 4-ех бит мы можем выразить числа от 0 до 15. Но не можем выразить число -4. На деле все верно: четырехбитное представление чисел 12 и -4 совпадают. Но для каждого из рассмотренных случаев возможный диапазон значений включает только одно из этих чисел. Если у вас есть опыт работы с языками программирования, то, возможно, вы встречали такие числовые типы данных как знаковое целое (signed integer) и беззнаковое целое (unsigned integer). Оба этих типа как правило имеют один и тот же двоичный размер, но так как первый тип позволяет хранить отрицательные значения, а второй - нет, то диапазоны значений у них тоже разные. Если представить, что размер этих типов 4 бита (в реальности он скорее всего больше), то, в зависимости от того, какой тип данных у переменной, программа трактует одно и то же двоичное значение 1100 либо как -4, либо как 12.
@user-yd2wm6gt5k
@user-yd2wm6gt5k 2 года назад
@@BitFlipChannel слишком мало сабов ГрустныйКот
@hunter-km1tn
@hunter-km1tn Год назад
Есть три способа представления чисел в виде двоичного кода: 1) Прямой код (рассмотрен в самом начале) Он хорош для восприятия глазам, но не компьютеру. Если представлять числа в виде прямого кода, то вычитание из меньшего большее число (оба положительные) не будет правильно работать (в результате будет получаться инвертированное значение). Как мы знаем, даже столбиком нельзя вычитать десятичные числа из меньшего большее. Для этого нужно сначала определить, какое из чисел больше и затем большее сделать уменьшаемым, а меньшее вычитаемым. При этом для операции вычитания нужен не сумматор, а вычитатель. Как видим, для операции сложения и вычитания нужен помимо сумматора ещё и вычитатель, а также проводить дополнительные проверки и инвертирование. 2) Обратный код. Тут не нужен вычитатель. Сумматор вполне справится при вычитании чисел, но после вычитания необходимо дополнительно выполнить операцию суммирования с единицей для получения верного ответа, т.е. эту ничтожную операцию необходимо пропустить через все 4 однобитных сумматора. При этом необходимо организовать дополнительные проверки, чтобы только в определенном случае выполнялась эта последняя операция, т.е. когда выставлен флаг вычитания либо когда подано отрицательное число. Можно поступить без дополнительного суммирования, но всё равно понадобится выполнить много проверок. 3) Дополнительный код. Всё то же, что и в обратном коде, только после вычитания не требуется выполнять операцию сложения с единицей и выполнять связаные с этим дополнительные проверки.
@user-kh6sr8tp1m
@user-kh6sr8tp1m Год назад
Немного не понял что за танцы вокруг вычитания, компьютер не может вычесть число, это мы представляем что он вычитает. Он просто складывает положительное и отрицательное число с выходом за границу.
@hunter-km1tn
@hunter-km1tn Год назад
@@user-kh6sr8tp1m любое целое число можно по-разному записать в память компьютера (в виде прямого, обратного или дополнительного кода). Тоже самое делается и со вторым числом. Затем между ними необходимо выполнить операцию. В зависимости от того, в каком коде записаны числа в компьютер, зависит то, как он будет производить операцию над ними.
@user-kh6sr8tp1m
@user-kh6sr8tp1m Год назад
​@@hunter-km1tn нет, какую операцию компьютер будет выполнять зависит от кода, который поступает в вычислительный движок. Если тебе нужно выполнить вычитание ты будешь с определенных регистров предавать числа в вычислительный движок. Движок в свою очередь получает код, какую операцию нужно выполнить.
@user-kh6sr8tp1m
@user-kh6sr8tp1m Год назад
@@hunter-km1tn следует различать "можем представить число по разному" и "можем по разному записать". Как ты по разному запишешь 00000010 ? Если ты юзаешь вычитание, то это становится вообще другим числом, а вычитание происходит по причине переполнения 8 бит, как в моем примере.
@hunter-km1tn
@hunter-km1tn Год назад
@@user-kh6sr8tp1m поизучай подробнее эту тему
@OpenFrimeTVcom
@OpenFrimeTVcom 6 месяцев назад
вот теперь возник вопрос, может тупой, а вот это дополнение к сумматору это чисто чтоб показать работу? на самом деле в памяти все хранится иначе процессору не нужно иметь функции для суммирования?
@N1047.
@N1047. 6 месяцев назад
Какое дополнение? XOR? И причём тут вообще память? Её тут нет. Абсолютно не понял, что ты имеешь ввиду
@OpenFrimeTVcom
@OpenFrimeTVcom 6 месяцев назад
@@N1047. ну вот в как процессор выполняет операции сложения. у него есть просто сумматор и на вход ему подаются отрицательные и положительные числа, или же там есть два разных сумматора для сложения и для вычитания? просто думаю если в памяти хранятся именно отрицательные числа то такой сумматор на практике не нужен
@N1047.
@N1047. 6 месяцев назад
@@OpenFrimeTVcom В данном случае используется способ, для которого вычитание выполняется на одном и том же сумматоре, что и сложение, чтобы не делать отдельно вычитатель и сумматор, так проще и быстрее
@OpenFrimeTVcom
@OpenFrimeTVcom 6 месяцев назад
@@N1047. так а в ПК как у нас хранится информация, сразу в обратном коде или как?
@N1047.
@N1047. 6 месяцев назад
@@OpenFrimeTVcom Можно в обратном, как угодно, но удобнее хранить в дополнительном коде для отрицательных чисел
@Windows-pq4xv
@Windows-pq4xv 4 месяца назад
Хах, а я для обратного кода выдумывал инверторы с выключателями
@Mordoviasega
@Mordoviasega 3 года назад
1+1+1=0 и 1 переносится
@BitFlipChannel
@BitFlipChannel 2 года назад
1+1=0 и 1 переносится 1+1+1=1 и 1 переносится
@user-oq9xr8dj1b
@user-oq9xr8dj1b 3 года назад
АЛУ меня не интересует. Пусть радуются математики, что у них есть решатель их проблем.)) Я решаю другую проблему и без математики.
Далее
RS-триггер
14:22
Просмотров 11 тыс.
Сумматор
16:57
Просмотров 8 тыс.
Четырехбитный сумматор
13:56
Просмотров 8 тыс.