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

  Рет қаралды 8,082

BitFlip

BitFlip

4 жыл бұрын

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

Пікірлер: 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-vk2ik1uh1j
@user-vk2ik1uh1j 2 ай бұрын
Можно отслживать заживание раны на указательном пальце)
@user-sd4pv6bc8v
@user-sd4pv6bc8v 3 жыл бұрын
Привет. Видосы огонь. А есть списочек всего необходимого?)
@khusniddinturgunov6589
@khusniddinturgunov6589 Жыл бұрын
Спасибо.
@per99
@per99 Жыл бұрын
Спасибо, теперь я понял
@juliaryabchikova9593
@juliaryabchikova9593 2 жыл бұрын
Уважуха тебе
@N1047.
@N1047. 6 ай бұрын
А как представить отрицательное число для декора? Например -2¹⁰ у меня это получается 14¹⁰ при декодировании. Как пример в конце с двойкой 1110² декодер переводит как 14, а не -2
@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 поизучай подробнее эту тему
@dvigatelist3834
@dvigatelist3834 3 жыл бұрын
А как быть когда в результате вычитания получается отрицательное число? 5-7 = -2 например.
@BitFlipChannel
@BitFlipChannel 3 жыл бұрын
Для отрицательных чисел мы используем дополнительный код для двоичных чисел. С помощью него мы можем выражать отрицательные числа. В ролике этот момент объясняется.
@user-sd4pv6bc8v
@user-sd4pv6bc8v 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 слишком мало сабов ГрустныйКот
@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 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
Рет қаралды 11 М.
Сумматор
16:57
BitFlip
Рет қаралды 8 М.
Glow Stick Secret (part 2) 😱 #shorts
00:33
Mr DegrEE
Рет қаралды 54 МЛН
Не пей газировку у мамы в машине
00:28
Даша Боровик
Рет қаралды 10 МЛН
¡Puaj! No comas piruleta sucia, usa un gadget 😱 #herramienta
00:30
JOON Spanish
Рет қаралды 22 МЛН
Четырехбитный сумматор
13:56
BitFlip
Рет қаралды 8 М.
Дифференциальные формы. Ковекторы.
10:28
Илья Молотов
Рет қаралды 4 М.
ЧТО такое ТРОИЧНАЯ ЛОГИКА? РАЗБОР
12:16
CPU логика
18:32
House of NHTi
Рет қаралды 102 М.
КАК работает ПРОЦЕССОР? ОБЪЯСНЯЕМ
9:09
Как я сделал домашний кинотеатр
0:41
RICARDO
Рет қаралды 1,5 МЛН
Обманет ли МЕНЯ компьютерный мастер?
20:48
Харчевников
Рет қаралды 182 М.
Fiber kablo
0:15
Elektrik-Elektronik
Рет қаралды 7 МЛН
IPad Pro fix screen
1:01
Tamar DB (mt)
Рет қаралды 4,7 МЛН
Готовый миниПК от Intel (но от китайцев)
36:25
Ремонтяш
Рет қаралды 447 М.