二进制编码的十进制(Binary Coded Decimal,BCD)数据类型在计算机系统中已经存在很久了。BCD格式经常用于简化对使用十进制数字的设备(比如必须向人显示数字的设备,如时钟和计时器)的处理。处理器不是把十进制数字转换为二进制数字以便进行数学操作,然后再转换回十进制;而是可以按照BCD格式保存数字并且执行数学操作。

 

BCD的名称就说明了它的作用,它按照二进制格式对十进制数字进行编码。每个BCD值都是一个无符号8位整数,值的范围是0到9。在BCD中,大于9的8位值被认为是非法的。包含BCD值的字节组合在一起表示十进制的数位。在多字节的BCD值中,最低的字节保存十进制的个位的值,下一个较高位字节保存十位的值,依次类推。

例如,十进制214被表示为BCD值 00000010 00000001 00000100。高位字节保存百位的值(2),下一个字节保存十位的值(1),最低的8位保存个位的值(4)。

 

BCD使用整个字节表示每个十进制数位,这样浪费了空间。打包的BCD被创建出来,帮助弥补这一损失。打包的BCD允许单一字节包含两个BCD值。字节的低4位包含低位的BCD值,字节的高4位包含高位的BCD值。

例如,十进制值1 489存储在2个字节的BCD值中:00010100 10001001。

05-11 13:43