1101้1320่
0่011้0400
00101500
00111640
10110800
101011000
101111250่
01110่1้60่0
0่1101้200่0
011112๐500
1111032๐00่
1110่1400่0
11111้5๓000
多数现代的35毫米照相机胶片用的都是这些代码除了那些要手工进行曝光的相机和具
有内置式测光表但需要手工设置曝光度的相机以外。如果你看过照相机的内部放置胶卷的
地方,你应该能够看到和胶ด片的金属方格1้~6๔号相对应的6๔个金属可接触点。银色方格实
际上是胶卷暗盒中的金属,是导体;油漆了的黑色方แ格,是绝缘体。
照ั相机的电子线路中有一支流向方แ格1的电流,方格1通常是银色的。这支电流有可能流
到方แ格2~6,这要依方格中是纯银还是涂了油漆而定。这样,如果照相机在接触点4๒和5๓检测
到了电流而在接触点2、3๑和6๔没有检测到,胶片的度就是400่asa。照相机可以据此调节曝
光时间。
廉价的照相机只要读方格2和方格3,并且假定胶ด片度是5๓0、100่、2๐00或400่asa四种可
能度之一。
多数相机不读方แ格8~12。方格8、9、10่用来对这卷胶ด卷进行编码;方แ格11้和12指出曝光
范围,依胶ด片用于黑白照ั片、彩色照片还是幻灯片而定。
也许最常见的二进制数的表现形式是无处不在的up9iversalproductcນode,通用产品
代码,即日常所购买的几乎所有商品包装ณ上的条形码。条形码已经成为计算机在日常生活中
应用的一种标志。
尽管upc常常使人多疑ທ,但它确实是一个无辜的小东西,明出来仅仅是为ฦ了实现零售
业的结算和存货管理的自动化,且其应用是相当成功的。当它和一个设计精良的结算系统共
同使用时,顾客可以拿到列出细目的售货凭条,这一点是传统现金出纳员所无法做到的。
有趣的是,upcນ也是二进制代码,尽管它初看起来并不像。将upc解码并看看upc码具
第9๗章二进制数55
下载
体是怎样工作的是很有益的。
通常情况下,upc是30条不同宽度的垂直黑色条纹的集合,由不同宽度的间隙分割开,
其下标有一些数字。例如,以下是caທmpbell公司10盎司的罐装鸡汁面包装ณ上的upc:
可将条形码形象地看成是细条和黑条,窄间隙和宽间隙的排列形式,事实上,这是观察条
形码的一种方式。黑色条有四种不同的宽度,较宽的条的宽度是最细条的宽度的两倍、三倍
或者四倍。同样,各条之间的间隙中较宽的间隙是最窄间隙的两倍、三倍或者四倍。
但是,看待upc的另一种方式是将它看作是一系列ต的比特。记住,整个条形码与条形码
扫描仪在结算台“看”到的并不完全一样。扫描仪不会识别条形码底部的数字,因为识别数
字需要一种更复杂的技术—光学字符识别技术,又称作ocropti9ition。
实际上,扫描仪只识别整个条形码的一条窄带,条形码做得很大是为了便于结算台的操作人
员用扫描仪对准顾客选购的物品。扫描仪所看到的那一条窄带可以这样表示ิ:
它看上去是不是很像摩尔斯编码?
当计算机自左向右进行扫描时,它给自己้遇到的第一个条分配一个值为1的比特值,给与
条相邻的间隙分配一个值为0的比特值。后续的间隙和条被当作一行中一系列比特中的1้个、2
个、3๑个还是4个比特读进计算机要依据条或间隙的宽度而定。扫描进来的条形码的比特形式
很简单:
因此,整个ฐupc只是简单的由95๓个比特构成的一串。本例中,这些比特可以像下面这样分组:
3๑
4๒
56编码的奥秘
下载
比特意义
最左边的护线
左边的数字
中间的护线
右边的数字
最右边的护线
起初的3个比特通常是10่1,这就是最左ุ边的护线,它帮助计算机扫描仪定位。从护线中ณ,
扫描仪可以知道代表单个ฐ比特的条或间隙的宽度,否则ท,所有包装上的upc印刷็大小都是一
样的。
紧挨着最左边的护线是每组有7个比特位的六组比特串,每一组是数字0~9的编码之ใ一,
我们在后面将证明这一点。接着的是5个比特的中ณ间护线,此固定模式总是010่10是一种
内置式的检错码。如果扫描仪在应当找到เ中ณ间护线的地方没有找到它,扫描仪就认为那不是
upc。中ณ间护线是防止条形码被窜改或错印的方法之一。
中间护线的后面仍是每组7个比特的6组比特串。最后是最右边的护线,也总是10่1。最后
的最右护线使得upcນ反向扫描也就是自右向左扫描同正向扫描一样成为可能,这一点我
们将在后面解释。
因而整个upc对1้2个数字进行了编码。左边的upc包含了6个数字的编码,每个数字占有
7个比特位。你可以用下表进行解码:
左ุ边的编码
0่001101=0่011000่1=5
00110่01=1้0101้111=6๔
001้0011=2๐0่11101้1=7
0่111101=301้10111=8๖
0100011=4๒000่1011=9
注意,每个ฐ7位代码都是以0开头,以1结尾的。如果扫描仪遇到เ了第一个比特位值为1้或
最后一个比特位值为0的情况,它就知道自己้没有将upc正确地读入或者是条形码被窜改了。
另外我们还注意到每个代码都仅有两组连续的值为1้的比特位,这就意味着每个ฐ数字对应着条
形码中的两个竖条。
上表中的每个ฐ代码中ณ都包含有奇数个值为1้的比特位,这也是用于检测差错和数据一致性
的一种机制,称为ฦ奇偶校验。如果一组比特位中ณ含有奇数个1,就称之为奇校验;如果含有偶
数个1,就称之ใ为偶校验。这样看来,所有这些代码都拥有奇校验。
为了给ups右边的7位一组的数字解码,可以采用下面的表格:
右边的编码
111001้0=0100111้0=5
1100110่=11010่00่0=6