Превышение-3 - Excess-3

Код Стибица
Цифры 4
Треки 4
Значения цифр 8 4  −2  −1
Вес (а) 1..3
Непрерывность Нет
Циклический Нет
Минимальное расстояние 1
Максимальное расстояние 4
Резервирование 0,7
Лексикография 1
Дополнение 9

Двоичный код с избытком -3 , 3-избытком или 10-избытком-3 (часто сокращенно XS-3 , 3XS или X3 ), сдвинутый двоичный код или код Стибица (после Джорджа Стибица , который построил релейную суммирующую машину в 1937 году) самокомплементарный двоично-десятичный код (BCD) и система счисления . Это предвзятое представление . Код Excess-3 использовался, в частности, на некоторых старых компьютерах, а также в кассовых аппаратах и ​​портативных электронных калькуляторах 1970-х годов.

Представление

Коды со смещением - это способ представления значений со сбалансированным количеством положительных и отрицательных чисел с использованием заранее заданного числа N в качестве значения смещения. Коды со смещением (и коды Грея ) - это невзвешенные коды. В коде превышения-3 числа представлены в виде десятичных цифр, и каждая цифра представлена ​​четырьмя битами как цифровое значение плюс 3 («избыточная» сумма):

  • Наименьшее двоичное число представляет наименьшее значение ( 0 - превышение ).
  • Наибольшее двоичное число представляет наибольшее значение ( 2 N +1 - превышение - 1 ).
Превышение-3 и код Стибица
Десятичный Превышение-3 Стибиц BCD 8-4-2-1 Двоичный Расширение 3 из 6 CCITT
Расширение Хэмминга 4 из 8
−3 0000 псевдотетрада Нет данных Нет данных Нет данных Нет данных
−2 0001 псевдотетрада
−1 0010 псевдотетрада
0 0011 0011 0000 0000 10 0011
1 0100 0100 0001 0001 11 1011
2 0101 0101 0010 0010 10 0101
3 0110 0110 0011 0011 10 0110
4 0111 0111 0100 0100 00 1000
5 1000 1000 0101 0101 11 0111
6 1001 1001 0110 0110 10 1001
7 1010 1010 0111 0111 10 1010
8 1011 1011 1000 1000 00 0100
9 1100 1100 1001 1001 10 1100
10 1101 псевдотетрада псевдотетрада 1010 Нет данных Нет данных
11 1110 псевдотетрада псевдотетрада 1011
12 1111 псевдотетрада псевдотетрада 1100
13 Нет данных Нет данных псевдотетрада 1101
14 псевдотетрада 1110
15 псевдотетрада 1111

Чтобы закодировать число, такое как 127, просто кодируют каждую из десятичных цифр, как указано выше, давая (0100, 0101, 1010).

В арифметике с превышением-3 используются алгоритмы, отличные от обычных беспристрастных двоично-десятичных или двоичных позиционных чисел. После сложения двух дополнительных трех цифр исходная сумма будет равна шести разрядам. Например, после сложения 1 (0100 сверх 3) и 2 (0101 сверх 3) сумма будет выглядеть как 6 (1001 сверх 3) вместо 3 (0110 сверх 3). Чтобы исправить эту проблему, после добавления двух цифр необходимо удалить дополнительное смещение путем вычитания двоичного 0011 (десятичное 3 в несмещенном двоичном), если результирующая цифра меньше десятичного 10, или вычитания двоичного 1101 (десятичного 13 в несмещенном двоичный), если произошло переполнение (перенос). (В 4-битном двоичном коде вычитание двоичного 1101 эквивалентно сложению 0011 и наоборот.)

Мотивация

Основное преимущество кодирования с избытком-3 перед кодированием без смещения состоит в том, что десятичное число может быть дополнено девятками (для вычитания) так же легко, как двоичное число может быть дополнено единицами : просто путем инвертирования всех битов. Кроме того, когда сумма двух дополнительных трех цифр больше 9, бит переноса 4-битного сумматора будет установлен в высокий уровень. Это работает, потому что после сложения двух цифр "лишнее" значение 6 дает сумму. Поскольку 4-битное целое число может содержать только значения от 0 до 15, превышение 6 означает, что любая сумма, превышающая 9, будет переполняться (производить перенос).

Еще одно преимущество состоит в том, что коды 0000 и 1111 не используются ни для одной цифры. Эти коды могут вызвать неисправность в памяти или основной линии передачи. Также сложнее записать нулевой шаблон на магнитный носитель.

пример

Пример преобразователя BCD 8-4-2-1 в избыток-3 в VHDL :

entity bcd8421xs3 is
  port (
    a   : in    std_logic;
    b   : in    std_logic;
    c   : in    std_logic;
    d   : in    std_logic;

    an  : buffer std_logic;
    bn  : buffer std_logic;
    cn  : buffer std_logic;
    dn  : buffer std_logic;

    w   : out   std_logic;
    x   : out   std_logic;
    y   : out   std_logic;
    z   : out   std_logic
  );
end entity bcd8421xs3;

architecture dataflow of bcd8421xs3 is
begin
    an  <=  not a;
    bn  <=  not b;
    cn  <=  not c;
    dn  <=  not d;

    w   <=  (an and b  and d ) or (a  and bn and cn)
         or (an and b  and c  and dn);
    x   <=  (an and bn and d ) or (an and bn and c  and dn)
         or (an and b  and cn and dn) or (a  and bn and cn and d);
    y   <=  (an and cn and dn) or (an and c  and d )
         or (a  and bn and cn and dn);
    z   <=  (an and dn) or (a  and bn and cn and dn);

end architecture dataflow; -- of bcd8421xs3

Расширения

Расширение 3 из 6
Цифры 6
Треки 6
Вес (а) 3
Непрерывность Нет
Циклический Нет
Минимальное расстояние 2
Максимальное расстояние 6
Лексикография 1
Дополнение (9)
Расширение 4 из 8
Цифры 8
Треки 8
Вес (а) 4
Непрерывность Нет
Циклический Нет
Минимальное расстояние 4
Максимальное расстояние 8
Лексикография 1
Дополнение 9
  • Расширение кода 3 из 6: Код избытка 3 иногда также используется для передачи данных, а затем часто расширяется до 6-битного кода согласно CCITT GT 43 No. 1, где установлены 3 из 6 битов.
  • Расширение кода 4 из 8: в качестве альтернативы коду приемопередатчика IBM (который представляет собой код 4 из 8 с расстоянием Хэмминга 2) также можно определить код 4 из 8 с избытком-3 расширение, достигающее расстояния Хэмминга, равного 4, если должны передаваться только десятичные цифры.

Смотрите также

Ссылки