# Is it possible to make decimal computer using binary technology?

I have a question about computer architecture fundamentals. About binary system. Well, I know, computer doesn't use decimal (base 10) system to operate, it uses binary system, because there is a technical problem about transistors, and signals. Well, I know that only two states ( + and - ) system is comfortable for transferring information, because if there is more state, then there is big chance of information error. and of course transistors have only two states too.
.
.
Yes, well, but I have a question, why don't we just group every ten transistors together, so we can use computer in our natural system - decimal. I mean, ten transistors,

so if the first one is active and other nine are off - it means 0,
if the second one is active and other nine are off, - it means 1,
if the third one is active and other nine are off, - it means 2,
if the forth one is active and other nine are off, - it means 3,
.
.
.
.
if the tenth one is active and other nine are off, it means 9.
.
So we can use decimal information, instead of binary. This one group of ten transistors will be one "bit". And, so this one "bit" can express ten different values, instead of only two.
.
So, why we can't do that? I think it would be great to make a computer that just uses decimal system.
.
What would you say about that?
Thanks...

• One word: WITCH (AKA The Harwell Dekatron) – Majenko Feb 12 '15 at 22:40
• It is possible. But it is easier to let software deal with it. – mkeith Feb 12 '15 at 23:08
• 10 transistors have ability to store 2^10 = 1024 different values. Using the approach that you mentioned, only 10 different values can be stored. So I guess it is economically viable to store information in binary. – Vishal Dalwadi Nov 14 '19 at 8:45

Actually the ENIAC, considered to be the first large scale general purpose programmable electronic computer, used a scheme almost identical to what you propose.

It used ten-position ring counters to store digits in ten's complement representation. Each digit used 36 vacuum tubes, 10 of which were the dual triodes making up the flip-flops of the ring counter (corresponding to the ten transistors in your proposal -- actually you would need a minimum of twenty transistors so you could have ten flip-flops to store the state, corresponding to the ENIAC's dual triodes).

Arithmetic was performed by counting pulses with the ring counters and generating a carry if the counter wrapped around. ENIAC had twenty ten-digit signed accumulators.

So your idea goes back almost 70 years.

Other notable decimal computers were the Harvard Mark 1, the IBM 650 and successors 7070 series, and the UNIVAC Solid State (competitor to the 650).

• Your knowledge of old electronics continues to fascinate a newbie like me. – FullmetalEngineer Feb 13 '15 at 0:33
• Thanks. I turned 68 earlier this week -- that helps. (I don't feel anywhere near that old, or anyhow what I thought 68 year old people were like -- I still work full time as an embedded system guy, and have no plans of retiring.) Plus I'm just interested in these old machines. My wife gave me not one but three books on Alan Turing for my birthday, since we saw "The Imitation Game" together a couple of weeks ago. – tcrosley Feb 13 '15 at 0:57
• When did neon counter tubes enter into the picture? Such things would probably be a slower than vacuum tubes, but I would think computing equipment using them could be much cheaper than using vacuum tubes. I'm also curious if anyone ever used something similar to a gas plasma screen for information storage? One would need electrodes formed of resistive wire, with bus bars of low-resistance material, but for the cost of Y row drivers and X pairs of column drivers one could store XY bits. – supercat Mar 1 '15 at 21:00

It is possible to design computers that work with numbers in decimal format, but many factors make binary easier to work with. Consider, for example, the process of adding two numbers. Doing this quickly requires identifying--as fast as possible--which digits will have carries out and which will have carries in. The first step of such determination is to determine for each digit whether it will generate a carry out regardless of the carry in, whether it will propagate a carry out only if there was a carry in, or do neither. The "generate" and "propagate" from individual digits can then be used to handle carry for pairs of digits, and then groups of four, eight, sixteen, etc.

When working in binary, the "propagate" output will be set if either source bit are set, and "generate" will be set if both are set. When working in decimal, the propagate output must be set if the first operand is 9, or the second operand is nine, or the first operand is at least 8 and the second is at least 1, or if the operands are at least 7+2, 6+3, 5+4, 4+5, 3+6, 2+7, or 1+8. The generate output must be set when the operands are at least 9+1, 8+2, 7+3, 6+4, 5+5, 4+6, 3+7, 2+8, or 1+9. That's a lot more work than is required in binary. Given that only a small fraction of the work done by computers is with numbers that are intended to be "human readable", it's generally more practical to have computers process things in binary and process numbers into human-readable form on those rare occasions when it's necessary, than it would be to work with human-readable numbers all the time.

Historically, it sometimes did make sense for computers to keep numbers stored in human-readable format. Many video games, for example, kept score using a sequence of decimal digits (which is why scores roll over at precise powers of ten, rather than at powers of two). As time has gone by, however, the advantages of storing numbers in decimal format, rather than keeping everything in binary and converting on demand, have diminished.

So you suggest using ten transistors to represent a 0 to 9 decimal number. In binary, 4 transistors can represent decimal 0 to 15. I'll stick with binary and suggest you review how numbers are represented.

By the way, transistors are not limited to two states else how would you build an analogue amplifier or radio receiver.

• BTW, representing decimal with 4 bits is referred to as BCD (binary coded decimal). A number of commercial computers in the past have used this to be a "decimal" computer. The IBM 1620 comes to mind. – DoxyLover Feb 13 '15 at 17:02
• This is exactly the point. The 10 transistors mentioned by the OP could either store a value from 0-9 using decimal, or they could store a value from 0-1023 using binary. The latter is clearly much more efficient. – Rocketmagnet Nov 14 '19 at 9:35

The x86 CPUs most of us are typing this conversation on it can handle BCD (binary coded decimal) data in hardware, using the floating point instructions inherited from the old 8087 coprocessor. These convert from BCD to binary when loading a register, and convert back when storing to memory. There is also a half-carry bit in the flags register which is used by some obscure instructions for doing BCD arithmetic on integers (see DAA, DAS, AAA, AAS, AAM, and AAD).

Even if the hardware is optimized for it, BCD arithmetic takes more energy than binary, and is slower. The only thing it ever makes sense to use it for is implementing a calculator, where you want financial calculations to round as expected, you want more digits than the floating point format provides, and where it only has to be faster than someone typing in numbers and operators. The Windows calculator provides 32 digits.