BCD码——也称8421码、二–十进制码,是一种以4位二进制数表示一位十进制数的编码。由于BCD码与十进制数具有一一对应关系,因此BCD码很适合于人机交互(显示和输入)场景。
二进制数转BCD码常使用加3移位法来处理,而不使用除法,是因为除法占用CPU寄存器的数量较多——CPU寄存器在计算机处理中,是存取速度最快速的临时存储器,数量是非常有限,对于8位单片机来说其数量也仅是个位数。
加3移位法的基本原理:4位二进制数的数容空间是16个整数值(0,1,…,15),而每位十进制的数容空间为10个整数值(0,1,…,9),即BCD码中的4位二进制数有6个数值空间未使用。为了使这6个空间不被“非法”占用,就需要+6来使非法占用的部分溢出——自动进位到高位。
因此,溢出修正的基本原理可表示为:
(由于Web排版不便,下文将以图片形式给出,