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

  Переглядів 7,990

BitFlip

BitFlip

4 роки тому

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

КОМЕНТАРІ: 41
@arthur29j
@arthur29j 3 роки тому
Поспал на паре и потому до просмотра видео сидел и тупил над лабой)) Спасибо за помощь!
@polymorph5067
@polymorph5067 3 роки тому
18:16 Отлично объяснил. До этого не мог понять, зачем нужно было подавать 1 на вход переноса для 1 - го сумматора
@nafis9908
@nafis9908 4 роки тому
Хорошо обьяснил, молодец!
@alexator22
@alexator22 3 роки тому
Идеально всё объяснил. Спасибо огромное!
@filkapali8395
@filkapali8395 Рік тому
Офигеть, я понял😧 Спасибо!!!!
@allex6829
@allex6829 Рік тому
Спасибо за видео, весь интернет перерыл в поисках этого ролика, не мог смириться с мыслью, что не знаю как дополнительный код реализован. И ты в курсе откуда флаг Sub передается ? откуда он знает что с числом делать?
@per99
@per99 Рік тому
Спасибо, теперь я понял
@user-vk2ik1uh1j
@user-vk2ik1uh1j Місяць тому
Можно отслживать заживание раны на указательном пальце)
@user-sl4lh9ep8c
@user-sl4lh9ep8c 3 роки тому
Отлично!
@khusniddinturgunov6589
@khusniddinturgunov6589 Рік тому
Спасибо.
@juliaryabchikova9593
@juliaryabchikova9593 2 роки тому
Уважуха тебе
@user-sd4pv6bc8v
@user-sd4pv6bc8v 3 роки тому
Привет. Видосы огонь. А есть списочек всего необходимого?)
@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 поизучай подробнее эту тему
@N1047.
@N1047. 5 місяців тому
А как представить отрицательное число для декора? Например -2¹⁰ у меня это получается 14¹⁰ при декодировании. Как пример в конце с двойкой 1110² декодер переводит как 14, а не -2
@user-sd4pv6bc8v
@user-sd4pv6bc8v 3 роки тому
Народ! Какие провода для перемычек подходят?
@Mistarbist1984
@Mistarbist1984 3 роки тому
Можно не убирая пятый бит сделать так чтобы при включении вычитания тот игнорировал пятый бит
@dvigatelist3834
@dvigatelist3834 3 роки тому
А как быть когда в результате вычитания получается отрицательное число? 5-7 = -2 например.
@BitFlipChannel
@BitFlipChannel 3 роки тому
Для отрицательных чисел мы используем дополнительный код для двоичных чисел. С помощью него мы можем выражать отрицательные числа. В ролике этот момент объясняется.
@OpenFrimeTVcom
@OpenFrimeTVcom 5 місяців тому
вот теперь возник вопрос, может тупой, а вот это дополнение к сумматору это чисто чтоб показать работу? на самом деле в памяти все хранится иначе процессору не нужно иметь функции для суммирования?
@N1047.
@N1047. 5 місяців тому
Какое дополнение? XOR? И причём тут вообще память? Её тут нет. Абсолютно не понял, что ты имеешь ввиду
@OpenFrimeTVcom
@OpenFrimeTVcom 5 місяців тому
@@N1047. ну вот в как процессор выполняет операции сложения. у него есть просто сумматор и на вход ему подаются отрицательные и положительные числа, или же там есть два разных сумматора для сложения и для вычитания? просто думаю если в памяти хранятся именно отрицательные числа то такой сумматор на практике не нужен
@N1047.
@N1047. 5 місяців тому
@@OpenFrimeTVcom В данном случае используется способ, для которого вычитание выполняется на одном и том же сумматоре, что и сложение, чтобы не делать отдельно вычитатель и сумматор, так проще и быстрее
@OpenFrimeTVcom
@OpenFrimeTVcom 5 місяців тому
@@N1047. так а в ПК как у нас хранится информация, сразу в обратном коде или как?
@N1047.
@N1047. 5 місяців тому
@@OpenFrimeTVcom Можно в обратном, как угодно, но удобнее хранить в дополнительном коде для отрицательных чисел
@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 слишком мало сабов ГрустныйКот
@Windows-pq4xv
@Windows-pq4xv 3 місяці тому
Хах, а я для обратного кода выдумывал инверторы с выключателями
@Mordoviasega
@Mordoviasega 2 роки тому
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
BitFlip
Переглядів 10 тис.
ЧТО такое ТРОИЧНАЯ ЛОГИКА? РАЗБОР
12:16
"Поховали поруч": у Луцьку попрощались із ДВОМА Героями 🕯🥀 #герої #втрати
00:15
Телеканал Конкурент TV - новини Луцька та Волині
Переглядів 309 тис.
Історія загиблого Назара Небожинського
00:54
Суспільне Рівне
Переглядів 621 тис.
Сумматор
16:57
BitFlip
Переглядів 8 тис.
CPU логика
18:32
House of NHTi
Переглядів 102 тис.
Как компьютеры складывают числа
14:27
Хекслет
Переглядів 473 тис.
Четырехбитный сумматор
13:56
BitFlip
Переглядів 8 тис.
Теперь это его телефон
0:21
Хорошие Новости
Переглядів 296 тис.
The power button can never be pressed!!
0:57
Maker Y
Переглядів 21 млн
Клавиатура vs геймпад vs руль
0:47
Balance
Переглядів 848 тис.