条形码中的数学奥秘——二进制
当你在超市挑选完商品去结账时,售货员只需拿起扫码器,扫描商品上的条形码,便可以把商品的名称、单价等信息录入电脑,计算出商品总价,并打出购物小票。与此同时,计算机也能够将售出的商品传回超市总机以便监控商品库存。看似步骤繁琐且需要处理众多信息的收款环节,因小小的条形码而变得方便有效。
条形码就是商品包装上的黑白相间直线段条纹形状的图案,条形码下通常还会标注数字。要做到扫码处理商品价格、库存等,需要经过扫描和译码两个过程。扫描就是利用条形码黑白相间的特点进行的,由于黑色能够吸收所有可见光,白色能够反射所有可见光,所以当扫描器扫描条形码后,由白色空白处的条码反射的可见光就会反射到扫描器中的光电传感器上,将光信号转换成电信号,再通过电路将电信号转换为数字信号。最后,黑白相间的条形码会根据条码的宽度转换为一定数量的0和1,并按照条码顺序进行排列。计算机便可以通过特定的编码规则将扫描所得的二进制数字转换为人们所需要的信息。
之所以将条形码或二维码通过电路转化为二进制的数字串或数字矩阵,是因为计算机便于通过二进制进行逻辑演算。由于便于使用1和0表示电路的通断,也有利于提高判断的精准度,减少误差,因此二进制是计算机自发明以来普遍使用的底层机器码的数字进制。虽然底层机器码与我们使用的图形窗口等应用层的功能已没有很大关联,但是计算机在处理代码时,无论在应用层还是底层,0与1、False与True这样的判断都是简洁而富有逻辑的。
我们日常生活中接触到的商品条形码,条码底部通常有13位数字,这种条形码又被称为欧洲物品编码(EAN13),主要用于商场超市和零售店等。
EAN13条形码的第一位为前置码,最后一位为校验码。我们所看到的三对长于其他条码长度的直线段从左到右分别叫做起始符、中间分隔符和终止符。其中,起始符与中间分隔符之间的六位数字被称为左侧数据符,中间分隔符与校验码之间的五位数字被称为右侧数据符。生成条形码时便是将十进制数字信息或字符信息转化为二进制,使用空白处表示0、黑色表示1的规则,通过EAN13的编码表进行编码得出二进制数字串,进而将这串数字转换为条形码。