1比特是可能存在的最小的信息量,任何小于1比特的内容根本算不上是信息。

信息是指多个可能性中的一种。

最常见的二进制数的表现形式也许就是无处不在的通用产品代码(UPC,Universal Product Code)。

有趣的是,UPC也是二进制码,虽然乍看起来不太像。下面看看UPC是怎样工作的,就会明白。

以下图所示的UPC为例。

我们试着这样解读,将UPC看作一系列比特位。将黑色条纹看作1,白色间隙看作0,;由于黑条纹的宽度和白间隙的宽度是成倍数的,宽条纹的宽度是窄条纹的二倍三倍,将最窄的条纹作为基元。将上图的一个断面取出如下所示。

实际上,计算机扫描时正式这样处理的,转换后本例中的条纹和比特位之间的关系可以如下表示。

整个UPC一共95位二进制数,起初的3个比特通常是1 0 1,这就是最左边的护线,它帮助计算机扫描仪定位。从护线中,扫描仪可以知道代表单个比特的条或间隙的宽度,所有包装上的UPC印刷大小都是一样的。

最左边的护线之后是6组比特串,每串7个比特位。每一组代表0-9中的一个数字。就下来是5个比特位的中间护线,通常是01010,它是一个内置的检错码,预防条形码被篡改或印错。中间护线后又是6组比特串,每组7个比特位,最右边是右侧护线,共3位,101。

对于中间护线左右两侧的6组比特串,可以用下面的图示方法进行编码。

左边的编码方式中,以0开头,以1结尾,而且采用奇校验,每组1的个数都是奇数个。右边的编码方式都是以1开头,以0结尾,而且是左边编码对应的反码,采用偶校验。利用上面两个编码表,我们解码后的数字是

0  51000  01251  7

这一串数字与条形码下面的数字一模一样,这并非巧合。

上面的这串数字的第一个数字被称为数字系统符。接下来5个表示制造商编码,后5位是该厂商的商品编码。最后一位数字按下图所示的方式计算。

用A-K表示这11个数字。

按下列方式组合计算

代入数据

然后用最接近这个结果的10 的整数倍(这里是30)减去这个数

也就是30-23=7,正好是最后一位数字。

这样UPC总共使用95个比特位来表示11位有效的十进制数,实际上UPC左右护线两侧还有空白位置。之所以加入这些冗余是为了安全,如果条形码虽已被改动就没有任何意义了。

当从右向左扫描时,编码方式反之即可。编码表如下所示,

条形码本质上使用二进制描述的,莫尔斯码也是如此。把莫尔斯码的点和划以及两者之间的空白看作二进制的0和1也会有类似的表述方式。

虽然一个比特位只能表示两种状态,但是二进制的比特可以做的事情太多了。0和1无处不在。

上一篇-->编码:隐匿在计算机软硬件背后的语言(1)--编码到二进制数字系统

下一篇-->编码:隐匿在计算机软硬件背后的语言(3)--二进制加法器

编码:隐匿在计算机软硬件背后的语言(2)--二进制相关推荐

  1. 编码——隐匿在计算机软硬件背后的语言上

    编码:隐匿在计算机软硬件背后的语言是讲述计算机工作原理的.不过,你千万不要因为"工作原理"之类的字眼就武断地认为,它是晦涩而难懂的.作者用丰富的想象和清晰的笔墨将看似繁杂的理论阐述 ...

  2. 如何用继电器实现逻辑门(与或非门)- 编码隐匿在计算机软硬件背后的语言读后感

    首先了解一下继电器,说起继电器就不得聊一下电报机.(想直接了解如何实现逻辑门的直接往下翻,不过还是推荐看一下为什么会产生逻辑门,加深印象) 摩尔斯(发明摩尔斯密码的人)在1836年通知专利局,他发明了 ...

  3. 顶级程序员书单系列二:《编码-隐匿在计算机软硬件背后的语言》

    浅谈这本书 如果让我做一个排名,我想这本书,可以在我的顶级程序员书单系列排名第8-10位.这本书讲述了从最简单的加法器到触发器到存储器到一台计算机demo的搭建,整本书的语言都十分通俗易懂,作者简直就 ...

  4. 读书:编码——隐匿在计算机软硬件背后的语言上

    摩斯密码 摩斯密码是由"."(短音)与"-"(长音)所组成的,短促的点信号" .",读" 的 "(Di):保持一定时间的 ...

  5. 【读书笔记】《编码 隐匿在计算机软硬件背后的语言》02 编码与组合

    个人希望通过笔记的方式记录研读IT著作的收获,也算是对自己的一个督促,笔记内容不会照搬原文,尽量以最简洁的形式阐述原文,对原文内容会有所取舍并且加上自己的感想等,供自己之后查阅,毕竟好记性不如烂笔头( ...

  6. 计算机神书『编码:隐匿在计算机软硬件背后的语言』

    在知乎回答了一个关于书籍推荐的问题:有哪些短小精悍的好书推荐? 如果只推荐一本计算机类的神书,那必然是<编码:隐匿在计算机软硬件背后的语言>. 渴望交流是大多数人的天性.在本书中,&quo ...

  7. 编码:隐匿在计算机软硬件背后的语言(7)--存储器组织

    在上一篇文章编码:隐匿在计算机软硬件背后的语言(6)--反馈与触发器中,我们知道一个反向器.两个与门和两个或非门可以构成一个D型电平触发器.它可以存储一位信息,为了表达地更清晰,我们把输入端和输出端重 ...

  8. 《编码:隐匿在计算机软硬件背后的语言(Code:The Hidden Language of Computer Hardware and Software)》读书笔记

    声明 该文章是阅读<编码:隐匿在计算机软硬件背后的语言>一书之后整理出的读书笔记.若有错误,还需继续修正与增删. Preface 作者Charles Petzold是Windows编程界的 ...

  9. 【JS】隐匿在计算机软硬件背后的语言

    在重温<编码:隐匿在计算机软硬件背后的语言>第12章--二进制加法器时,心血来潮用JS写了一个模拟串行加法器. 测试断言工具TestUtils.js function assertTrue ...

最新文章

  1. jQuery UI vs Kendo UI jQuery Mobile vs Kendo UI Mobile
  2. Matlab绘制不同阻尼下的系统响应
  3. 孤儿进程与僵尸进程[总结]
  4. oracle rman备份spfile,RMAN备份恢复之SPFILE的恢复(一)
  5. PDF 翻译神器,再也不担心读不懂英文 Paper 了 | 开发攻略
  6. Controller层返回字符串
  7. 怎么找网页源文件位置_原神白铁块位置分布图 原神白铁块怎么找
  8. laravel-excel文档翻译笔记
  9. SpringMVC学习笔记(2)-参数绑定的常用方法
  10. Kinect 2.0 高帧率 同分辨率采集RGB-D图像并保存,并显示人体骨架
  11. ORACLE 10g下载地址
  12. 推荐一个网站:编程资料网 http://www.ourdev.net/
  13. python图片logo_Python logo
  14. Vant 商品规格sku用法
  15. 微信公众号图卡片息发送【模拟发送一个小程序信息】
  16. 蓝牙宠物食物称重碗方案开发
  17. MS7024 TV Encode digital数字信号转AV/SV配置说明
  18. Android集成银联支付
  19. xilinx 7系列FPGA之XADC的学习笔记
  20. 时间复杂度 P/NP/NPC

热门文章

  1. Floyd 算法+例题
  2. 设计模式笔记--访问者模式
  3. Matlab生成.exe可执行程序
  4. Notepad++ 安装 HexEditor 插件
  5. JS基础-事件模型(事件事件流自定义事件事件冒泡/代理)
  6. 财务分析之资产负债表
  7. jQuery easyUI pannel 用法记录
  8. (三)feild ii 相控阵聚焦成像:RF信号到成像全过程
  9. 快消品行业B2B电商平台解决方案
  10. 微信跳一跳游戏的脚本