22:31

один в поле воин я
Всем доброго времени суток!
Вопрос конечно не совсем "компьютерный", но думаю тут есть люди, которые помогут с двоичными числами.
Надо спроэктировать вычитатель чисел в шестирично-двоичной системе счисления. Все это ерунда, только я завис на этапе вычитания чисел.
читать дальше


Комментарии
29.04.2012 в 23:56

вообще я ничего не понял, но в вычислительной технике афаир нет вычитания, есть сложение. мне лень искать как это правильно делается, поэтому вимательно глядя в потолок могу предложить следующий алгоритм:
а. ксорите меньший агрумент с семёркой и прибавляете к нему 1;
б. складываете оба агрумента, выкинув лишние цифры.

примеры:
1. 110 - 010 (6-2) = 110 + 101 + 1 = 110 + 110 = 1100 = 100 (4)
2. 110 - 101 (6-5) = 110 + 010 + 1 = 110 + 011 = 1001 = 001 (1)
3. 011 - 011 (3-3) = 011 + 100 + 1 = 011 + 101 = 1000 = 000 (0)
4. 111 - 000 (7-0) = 111 + 111 + 1 = 111 + 1000 = 1111 = 111 (7)
5. 001 - 100 (1-4) = 110 + 1 + 100 = 111 + 100 = 1011 = 011 (3)

обратите внимание что знак при этом теряется
30.04.2012 в 00:09

один в поле воин я
ehlo_kitty, хех, это в современной технике нет вычитателя, а в ЭВМ типа Днпр/Урал еще как были. и один байт там ровнялся 6-7 битам.
всего-то что надо знать, чему будут равняться выражения 000-001=? 000-010=? 001-110=? с учетом того, что в этих случаях мы выходим за предел разрядной сетки и на выход, кроме результата, подаем сигнал для заёма единицы в старшем разряде.
30.04.2012 в 00:16

давайте с самого начала. вы знак где храните?
30.04.2012 в 00:34

один в поле воин я
ehlo_kitty, нигде, вычитаем из положительного положительное, но если не хватает разрядов, выдаем еще сигнал "заем разряда". вот вся суть. даже не то, что разрядов не хватает, а получается из меньшего вычитаем большее.
30.04.2012 в 01:06

а в чём смысл результата этой операции? энивейс, добавьте третий пункт к моему алгоритму: если второй агрумент больше первого, выдать сигнал.

для дальнейшей дискуссии задайте вопрос, в своём посте вы его пропустили.