I will just explain what a bit is. It's a binary digit. 0
is numerically zero, 1
is numerically one. If you want to add 1
and 1
, in binary it overflows. the result is 0
, and a carry out. As you understand, other arithmetic operations can be done on bits. They take a fair bit of logic to implement. Binary is positional. That means that a 1
which is 4 places from the right is worth 24 = 16.
Biquinary is not based on this idea. Biquinary is based on the idea "let's count from zero to four and then also flipflop to another state where we're counting instead from 5 to 9". Just like we humans count to five on one hand, and then count to ten on another hand. Or an abacus, that has four beads on one part of the rod, and one more bead on the other part. Now, how that's implemented in the IBM 650 is with binary states (not binary digits!) to say which of {0,1,2,3,4} is true, and which of {range(0..4), range(5..9)} is true. This implementation of biquinary is two "one-hot" signals. That means that a 1
which is 4 places from the right is worth either 0+4 = 4 or 5+4 = 9.
A binary state is different from a bit, as it is one of true
or false
. true
and false
cannot be added. true
and false
are just the values represented in some way, often by whether or not a current is flowing.
It represented decimal numbers in bi-quinary form, which requires seven bits per digit, as compared to BCD which requires only four bits per digit.
Not so; just think about the nixies: A single vacuum tube which has ten cathodes that glow. They share a common ground, so a further ten electrical connections, one per digit, can each light up one of the digits inside the tube. These electrical connections are not really bits though. These electrical connections are binary states, so that if the nixie is showing a particular number, you've got one true
and nine false
s.
The biquinary tubes in the IBM 650 have a similar arrangement. So don't think about it as "seven bits", but as "one decimal digit", whose implementation involves seven electrical contacts which are very cheap. The tube stores or treats one decimal digit. And it is the tube which incurs the cost.
So the biquinary system is not really seven bits representing a decimal system. It is more like a "thing which counts from 0 to 4" (five possible states) plus a "thing which can flip between high and low" (two possible states). The numbers 2 and 5 were chosen since they are the prime factors of ten. So here are the numbers from 0 to 9:
high low zero one two three four
----------------------------------------------------
0: false true true false false false false
1: false true false true false false false
2: false true false false true false false
3: false true false false false true false
4: false true false false false false true
5: true false true false false false false
6: true false false true false false false
7: true false false false true false false
8: true false false false false true false
9: true false false false false false true
Can you see? These are not bits because the word bit actually means "treat me as a base-2 digit". They are more like selectors. One selector says "I am one of zero, one, two, three and four". Another selector says "I am whatever the other guy said plus either zero or five". You can't add or subtract these selectors, or do any arithmetic on them, so these "selectors" are much, much cheaper than a bit in something like a modern computer.
These seven electrical signals together make up a decimal digit. And they correspond to seven "legs" on the bottom of the vacuum tube.
If you look at the table above, you can see that if you want to (for example) add two numbers, the process will naturally yield some kind of carry. It will flip the high/low pair between true false
and false true
, and will tell you which way it flipped. Now you know whether you've got to carry one to the next digit.
That arrangement is much simpler to implement than BCD which you mentioned it your question, where to figure out if you have a carry, you have to check if the (binary) addition got a carry, and if not, compare with 1001
, and if higher carry one and then subtract 1001
, otherwise carry 0. Biquinary addition is much cheaper. Especially if you use the vacuum tube that counts to five and flipflops between high and low.
01 10000
. 5 is10 00000
. 9 is10 10000
10 00000
. 5 is10 00001
.