Stibitz code | |
---|---|
Digits | 4 [1] |
Tracks | 4 [1] |
Digit values | 8 4 −2 −1 |
Weight(s) | 1..3 [1] |
Continuity | No [1] |
Cyclic | No [1] |
Minimum distance | 1 [1] |
Maximum distance | 4 |
Redundancy | 0.7 |
Lexicography | 1 [1] |
Complement | 9 [1] |
Excess-3, 3-excess [1] [2] [3] or 10-excess-3 binary code (often abbreviated as XS-3, [4] 3XS [1] or X3 [5] [6] ), shifted binary [7] or Stibitz code [1] [2] [8] [9] (after George Stibitz, [10] who built a relay-based adding machine in 1937 [11] [12] ) is a self-complementary binary-coded decimal (BCD) code and numeral system. It is a biased representation. Excess-3 code was used on some older computers as well as in cash registers and hand-held portable electronic calculators of the 1970s, among other uses.
Biased codes are a way to represent values with a balanced number of positive and negative numbers using a pre-specified number N as a biasing value. Biased codes (and Gray codes) are non-weighted codes. In excess-3 code, numbers are represented as decimal digits, and each digit is represented by four bits as the digit value plus 3 (the "excess" amount):
Decimal | Excess-3 | Stibitz | BCD 8-4-2-1 | Binary | 3-of-6 CCITT extension [13] [1] | 4-of-8 Hamming extension [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 |
To encode a number such as 127, one simply encodes each of the decimal digits as above, giving (0100, 0101, 1010).
Excess-3 arithmetic uses different algorithms than normal non-biased BCD or binary positional system numbers. After adding two excess-3 digits, the raw sum is excess-6. For instance, after adding 1 (0100 in excess-3) and 2 (0101 in excess-3), the sum looks like 6 (1001 in excess-3) instead of 3 (0110 in excess-3). To correct this problem, after adding two digits, it is necessary to remove the extra bias by subtracting binary 0011 (decimal 3 in unbiased binary) if the resulting digit is less than decimal 10, or subtracting binary 1101 (decimal 13 in unbiased binary) if an overflow (carry) has occurred. (In 4-bit binary, subtracting binary 1101 is equivalent to adding 0011 and vice versa.) [14]
The primary advantage of excess-3 coding over non-biased coding is that a decimal number can be nines' complemented [1] (for subtraction) as easily as a binary number can be ones' complemented: just by inverting all bits. [1] Also, when the sum of two excess-3 digits is greater than 9, the carry bit of a 4-bit adder will be set high. This works because, after adding two digits, an "excess" value of 6 results in the sum. Because a 4-bit integer can only hold values 0 to 15, an excess of 6 means that any sum over 9 will overflow (produce a carry-out).
Another advantage is that the codes 0000 and 1111 are not used for any digit. A fault in a memory or basic transmission line may result in these codes. It is also more difficult to write the zero pattern to magnetic media. [1] [15] [11]
BCD 8-4-2-1 to excess-3 converter example in VHDL:
entitybcd8421xs3isport(a:instd_logic;b:instd_logic;c:instd_logic;d:instd_logic;an:bufferstd_logic;bn:bufferstd_logic;cn:bufferstd_logic;dn:bufferstd_logic;w:outstd_logic;x:outstd_logic;y:outstd_logic;z:outstd_logic);endentitybcd8421xs3;architecturedataflowofbcd8421xs3isbeginan<=nota;bn<=notb;cn<=notc;dn<=notd;w<=(anandbandd)or(aandbnandcn)or(anandbandcanddn);x<=(anandbnandd)or(anandbnandcanddn)or(anandbandcnanddn)or(aandbnandcnandd);y<=(anandcnanddn)or(anandcandd)or(aandbnandcnanddn);z<=(ananddn)or(aandbnandcnanddn);endarchitecturedataflow;-- of bcd8421xs3
3-of-6 extension | |
---|---|
Digits | 6 [1] |
Tracks | 6 [1] |
Weight(s) | 3 [1] |
Continuity | No [1] |
Cyclic | No [1] |
Minimum distance | 2 [1] |
Maximum distance | 6 |
Lexicography | 1 [1] |
Complement | (9) [1] |
4-of-8 extension | |
---|---|
Digits | 8 [1] |
Tracks | 8 [1] |
Weight(s) | 4 [1] |
Continuity | No [1] |
Cyclic | No [1] |
Minimum distance | 4 [1] |
Maximum distance | 8 |
Lexicography | 1 [1] |
Complement | 9 [1] |
In computing and electronic systems, binary-coded decimal (BCD) is a class of binary encodings of decimal numbers where each digit is represented by a fixed number of bits, usually four or eight. Sometimes, special bit patterns are used for a sign or other indications.
In computer science, an integer is a datum of integral data type, a data type that represents some range of mathematical integers. Integral data types may be of different sizes and may or may not be allowed to contain negative values. Integers are commonly represented in a computer as a group of binary digits (bits). The size of the grouping varies so the set of integer sizes available varies between different types of computers. Computer hardware nearly always provides a way to represent a processor register or memory address as an integer.
In computing, a nibble (occasionally nybble, nyble, or nybl to match the spelling of byte) is a four-bit aggregation, or half an octet. It is also known as half-byte or tetrade. In a networking or telecommunications context, the nibble is often called a semi-octet, quadbit, or quartet. A nibble has sixteen (24) possible values. A nibble can be represented by a single hexadecimal digit (0
–F
) and called a hex digit.
The reflected binary code (RBC), also known as reflected binary (RB) or Gray code after Frank Gray, is an ordering of the binary numeral system such that two successive values differ in only one bit.
A binary code represents text, computer processor instructions, or any other data using a two-symbol system. The two-symbol system used is often "0" and "1" from the binary number system. The binary code assigns a pattern of binary digits, also known as bits, to each character, instruction, etc. For example, a binary string of eight bits can represent any of 256 possible values and can, therefore, represent a wide variety of different items.
A binary number is a number expressed in the base-2 numeral system or binary numeral system, a method for representing numbers that uses only two symbols for the natural numbers: typically "0" (zero) and "1" (one). A binary number may also refer to a rational number that has a finite representation in the binary numeral system, that is, the quotient of an integer by a power of two.
In digital electronics, a binary decoder is a combinational logic circuit that converts binary information from the n coded inputs to a maximum of 2n unique outputs. They are used in a wide variety of applications, including instruction decoding, data multiplexing and data demultiplexing, seven segment displays, and as address decoders for memory and port-mapped I/O.
Bi-quinary coded decimal is a numeral encoding scheme used in many abacuses and in some early computers, including the Colossus. The term bi-quinary indicates that the code comprises both a two-state (bi) and a five-state (quinary) component. The encoding resembles that used by many abacuses, with four beads indicating the five values either from 0 through 4 or from 5 through 9 and another bead indicating which of those ranges.
4-bit computing is the use of computer architectures in which integers and other data units are 4 bits wide. 4-bit central processing unit (CPU) and arithmetic logic unit (ALU) architectures are those that are based on registers or data buses of that size. A group of four bits is also called a nibble and has 24 = 16 possible values, with a range of 0 to 15.
In computing, signed number representations are required to encode negative numbers in binary number systems.
The Intel BCD opcodes are a set of six x86 instructions that operate with binary-coded decimal numbers. The radix used for the representation of numbers in the x86 processors is 2. This is called a binary numeral system. However, the x86 processors do have limited support for the decimal numeral system.
Chen–Ho encoding is a memory-efficient alternate system of binary encoding for decimal digits.
Densely packed decimal (DPD) is an efficient method for binary encoding decimal digits.
Decimal floating-point (DFP) arithmetic refers to both a representation and operations on decimal floating-point numbers. Working directly with decimal (base-10) fractions can avoid the rounding errors that otherwise typically occur when converting between decimal fractions and binary (base-2) fractions.
A decimal computer is a computer that can represent numbers and addresses in decimal and that provides instructions to operate on those numbers and addresses directly in decimal, without conversion to a pure binary representation. Some also had a variable wordlength, which enabled operations on numbers with a large number of digits.
Offset binary, also referred to as excess-K, excess-N, excess-e, excess code or biased representation, is a method for signed number representation where a signed number n is represented by the bit pattern corresponding to the unsigned number n+K, K being the biasing value or offset. There is no standard for offset binary, but most often the K for an n-bit binary word is K = 2n−1 (for example, the offset for a four-digit binary number would be 23=8). This has the consequence that the minimal negative value is represented by all-zeros, the "zero" value is represented by a 1 in the most significant bit and zero in all other bits, and the maximal positive value is represented by all-ones (conveniently, this is the same as using two's complement but with the most significant bit inverted). It also has the consequence that in a logical comparison operation, one gets the same result as with a true form numerical comparison operation, whereas, in two's complement notation a logical comparison will agree with true form numerical comparison operation if and only if the numbers being compared have the same sign. Otherwise the sense of the comparison will be inverted, with all negative values being taken as being larger than all positive values.
In computing, decimal32 is a decimal floating-point computer numbering format that occupies 4 bytes (32 bits) in computer memory. It is intended for applications where it is necessary to emulate decimal rounding exactly, such as financial and tax computations. Like the binary16 format, it is intended for memory saving storage.
BCD, also called alphanumeric BCD, alphameric BCD, BCD Interchange Code, or BCDIC, is a family of representations of numerals, uppercase Latin letters, and some special and control characters as six-bit character codes.
A half-carry flag is a condition flag bit in the status register of many CPU families, such as the Intel 8080, Zilog Z80, the x86, and the Atmel AVR series, among others. It indicates when a carry or borrow has been generated out of the least significant four bits of the accumulator register following the execution of an arithmetic instruction. It is primarily used in decimal (BCD) arithmetic instructions.
The Aiken code is a complementary binary-coded decimal (BCD) code. A group of four bits is assigned to the decimal digits from 0 to 9 according to the following table. The code was developed by Howard Hathaway Aiken and is still used today in digital clocks, pocket calculators and similar devices.
{{cite book}}
: |work=
ignored (help){{cite book}}
: CS1 maint: numeric names: authors list (link)