Код Штибица | |
---|---|
Цифры | 4 [1] |
Треки | 4 [1] |
Цифровые значения | 8 4 −2 −1 |
Вес(ы) | 1..3 [1] |
Непрерывность | Нет [1] |
Циклический | Нет [1] |
Минимальное расстояние | 1 [1] |
Максимальное расстояние | 4 |
Избыточность | 0,7 |
Лексикография | 1 [1] |
Дополнение | 9 [1] |
Двоичный код Excess-3 , 3-excess [1] [2] [3] или 10-excess-3 (часто сокращенно XS-3 , [4] 3XS [1] или X3 [5] [6] ), сдвинутый двоичный [7] или код Штибица [1] [2] [8] [9] (в честь Джорджа Штибица [10] , который построил релейный арифмометр в 1937 году [11] [12] ) — это самодополнительный двоично-десятичный (BCD) код и система счисления . Это смещенное представление . Код Excess-3 использовался на некоторых старых компьютерах, а также в кассовых аппаратах и портативных электронных калькуляторах 1970-х годов, среди прочего.
Смещенные коды — это способ представления значений со сбалансированным числом положительных и отрицательных чисел с использованием заранее заданного числа N в качестве смещающего значения. Смещенные коды (и коды Грея ) — это невзвешенные коды. В избыточном-3 коде числа представлены в виде десятичных цифр, а каждая цифра представлена четырьмя битами как значение цифры плюс 3 («избыточная» сумма):
Десятичная дробь | Избыток-3 | Штибиц | БКД 8-4-2-1 | Двоичный | Расширение CCITT 3 из 6 [13] [1] | Расширение Хэмминга 4 из 8 [1] |
---|---|---|---|---|---|---|
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 |
Чтобы закодировать число, например, 127, нужно просто закодировать каждую десятичную цифру, как указано выше, что дает (0100, 0101, 1010).
Арифметика с избытком 3 использует другие алгоритмы , чем обычные несмещенные числа в двоично-десятичном коде или двоичной позиционной системе . После сложения двух цифр с избытком 3 сырая сумма равна избытку 6. Например, после сложения 1 (0100 в избытке 3) и 2 (0101 в избытке 3) сумма выглядит как 6 (1001 в избытке 3) вместо 3 (0110 в избытке 3). Чтобы исправить эту проблему, после сложения двух цифр необходимо удалить дополнительное смещение, вычитая двоичное 0011 (десятичное 3 в несмещенном двоичном коде), если полученная цифра меньше десятичного 10, или вычитая двоичное 1101 (десятичное 13 в несмещенном двоичном коде), если произошло переполнение (перенос). (В 4-битном двоичном коде вычитание двоичного 1101 эквивалентно добавлению 0011 и наоборот.) [14]
Основное преимущество избыточного кодирования 3 над несмещенным кодированием заключается в том, что десятичное число может быть дополнено девятками [1] (для вычитания) так же легко, как двоичное число может быть дополнено единицами : просто инвертируя все биты. [1] Кроме того, когда сумма двух избыточных 3 цифр больше 9, бит переноса 4-битного сумматора будет установлен на высокий уровень. Это работает, потому что после сложения двух цифр «избыточное» значение 6 дает в сумме. Поскольку 4-битное целое число может содержать только значения от 0 до 15, избыток 6 означает, что любая сумма свыше 9 переполнится (произведет перенос).
Другим преимуществом является то, что коды 0000 и 1111 не используются для какой-либо цифры. Неисправность в памяти или базовой линии передачи может привести к появлению этих кодов. Также сложнее записать нулевой шаблон на магнитный носитель. [1] [15] [11]
Пример преобразователя BCD 8-4-2-1 в избыточный-3 на языке VHDL :
сущность bcd8421xs3 — это порт ( a : в std_logic ; b : в std_logic ; c : в std_logic ; d : в std_logic ; an : буфер std_logic ; bn : буфер std_logic ; cn : буфер std_logic ; dn : буфер std_logic ; w : out std_logic ; x : out std_logic ; y : out std_logic ; z : out std_logic ); конечная сущность bcd8421xs3 ; Поток данных архитектуры bcd8421xs3 имеет вид begin an <= not a ; bn <= not b ; cn < = not c ; dn <= not d ; w <= ( an и b и d ) или ( a и bn и cn ) или ( an и b и c и dn ); x <= ( an и bn и d ) или ( an и b и c и dn ) или ( an и b и cn и dn ) или ( a и bn и cn и d ); y <= ( an и cn и dn ) или ( an и c и d ) или ( a и bn и cn и dn ); z <= ( an и dn ) или ( a и bn и cn и dn ); конец потока данных архитектуры ; -- bcd8421xs3
3-из-6 расширение | |
---|---|
Цифры | 6 [1] |
Треки | 6 [1] |
Вес(ы) | 3 [1] |
Непрерывность | Нет [1] |
Циклический | Нет [1] |
Минимальное расстояние | 2 [1] |
Максимальное расстояние | 6 |
Лексикография | 1 [1] |
Дополнение | (9) [1] |
4-из-8 расширение | |
---|---|
Цифры | 8 [1] |
Треки | 8 [1] |
Вес(ы) | 4 [1] |
Непрерывность | Нет [1] |
Циклический | Нет [1] |
Минимальное расстояние | 4 [1] |
Максимальное расстояние | 8 |
Лексикография | 1 [1] |
Дополнение | 9 [1] |
{{cite book}}
: |work=
проигнорировано ( помощь ){{cite book}}
: CS1 maint: числовые имена: список авторов ( ссылка )