самодополнение кода - PullRequest
0 голосов
/ 24 марта 2012

https://electronics.stackexchange.com/questions/20537/how-to-identify-self-complementing-code

Я правильно прочитал,

, но необходимо ли, чтобы число вычиталось из 9?

, потому что в системе 842112 = 1100

, и если мы вычтем 15-12, то ответ будет 3, то есть 0011.

так что это тоже самодополняющий ...

Я не понимаю, что из этого числа нужно вычесть данное число, обязательно ли это число равно 9 ???

Ответы [ 3 ]

1 голос
/ 29 января 2016

Если сумма весов равна 9, то она является самодополняющей, например, 5211 = (5 + 2 + 1 + 1) = 9 или 2421 = (2 + 4 + 2 + 1) = 9 8421 не дополняет себя, поэтому, 8421! = 9.

0 голосов
/ 24 марта 2012

Некоторые перефразируют для уточнения: IIRC это означает, что когда видимое число вычитается из 9, "число" из кодирования инвертируется, то есть вычитается из 15.

Можно кодировать, например, 0 = 0011, 1 = 0100, 2 = 0101, ..., 9 = 1100 (так называемый избыток-3, подробности см. В ответе modi.

0 голосов
/ 24 марта 2012

Самодополняющий код для Base-10 - это код, для которого дополнение данной кодированной цифры d [0-9] приведет к 9-d , 9дополнение.

Для кодирования чисел Base-10 в двоичном виде мы должны иметь возможность представлять 10 значений [0-9], что означает, что нам требуется 4 бита, потому что 3 бита могут представлять 8 значений, что недостаточно;4 бита могут представлять 16 значений, что больше, чем нам нужно, но у нас нет (или мы хотим) дробных бит.

В этих 4 битах возможны многочисленные схемы кодирования, наиболее понятной из которых является схема 8-4-2-1 или прямое двоичное кодирование десятичного значения.Чтобы кодировать 12 с использованием 8-4-2-1, вы должны отдельно кодировать [1] и [2] в качестве их соответствующих двоичных представлений [0001] и [0010].

Дополнение 9 относится к контекстудвоичного кодирования десятичных чисел / чисел Base-10, потому что 9 является наибольшим значением, требуемым при кодировании чисел Base-10.

Ваш пример подразумевает Base-16, отображаемый в виде десятичной дроби, для которого вы правильно генерируете дополнение 15 вместо дополнения 9.8-4-2-1 - это интуитивно понятный самодополняющий код для Base-16, потому что взятие дополнения из четырехзначного двоичного числа аналогично вычитанию его из 15.

То же самое нельзя сказать оЧисло Base-10 представлено таким же образом, потому что мы представляем только 10 значений в 16-элементном кодовом пространстве, поэтому был разработан ряд более сложных систем для генерации самодополняющих кодов для представления десятичных чисел в 4-значных двоичных числах.,

Таблица 13.1 здесь: [http://www.inf.fu -berlin.de / lehre / WS00 / 19504-V / Chapter1.pdf ] показывает два самодополняющих кода для десятичного кодирования, а именно 84, -2, -1 и схемы избыточного-3 кодирования, а также в следующем разделе описываются цель и теория самодополняющих кодов.

...