C needs BCD -- why BCD? Accountants!

Geoff Kuenning geoff at desint.UUCP
Sat Nov 24 16:24:42 AEST 1984

In article <161 at harvard.ARPA> breuel at harvard.ARPA (Thomas M. Breuel) writes:

>As soon as I/O gets involved, it hardly matters which one is faster
>computationally. BTW, you can do conversions using shifts and (sorry
>to say that) BCD arithmetic... but you can write that in assembly

A Fujitsu Eagle transfers data at about 1.8 megabytes per second.  Many
mainframe disks are even faster.  If you are storing 6-byte (12-digit) BCD
and are adding two streams, you are transferring 18 bytes per operation.
Assuming you double-buffer but have only one controller, this is 100K
operations per second.  You thus have to convert to binary, add, and
convert back to BCD in approximately 10 microseconds.

I am perfectly aware that multiplications can be done with shifts and adds.
Indeed, that's how hardware multipliers work.  But I have never seen an
algorithm for converting binary to decimal without doing divisions.  It is
pretty hard to do 12 digits' worth of binary-to-decimal conversion in 10
microseconds on most machines (though possible on a modern
mainframe--right, Gordon?).  But a 12-digit BCD add can be pretty easy.
And it's actually worse than that, because a mainframe that powerful
typically has several controllers so that the full 1.8 megabyte output data
rate could be maintained if the CPU could keep up with it.

	Geoff Kuenning

More information about the Comp.lang.c mailing list