编码:隐匿在计算机软硬件背后的语言(2)--二进制
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)--二进制相关推荐
- 编码——隐匿在计算机软硬件背后的语言上
编码:隐匿在计算机软硬件背后的语言是讲述计算机工作原理的.不过,你千万不要因为"工作原理"之类的字眼就武断地认为,它是晦涩而难懂的.作者用丰富的想象和清晰的笔墨将看似繁杂的理论阐述 ...
- 如何用继电器实现逻辑门(与或非门)- 编码隐匿在计算机软硬件背后的语言读后感
首先了解一下继电器,说起继电器就不得聊一下电报机.(想直接了解如何实现逻辑门的直接往下翻,不过还是推荐看一下为什么会产生逻辑门,加深印象) 摩尔斯(发明摩尔斯密码的人)在1836年通知专利局,他发明了 ...
- 顶级程序员书单系列二:《编码-隐匿在计算机软硬件背后的语言》
浅谈这本书 如果让我做一个排名,我想这本书,可以在我的顶级程序员书单系列排名第8-10位.这本书讲述了从最简单的加法器到触发器到存储器到一台计算机demo的搭建,整本书的语言都十分通俗易懂,作者简直就 ...
- 读书:编码——隐匿在计算机软硬件背后的语言上
摩斯密码 摩斯密码是由"."(短音)与"-"(长音)所组成的,短促的点信号" .",读" 的 "(Di):保持一定时间的 ...
- 【读书笔记】《编码 隐匿在计算机软硬件背后的语言》02 编码与组合
个人希望通过笔记的方式记录研读IT著作的收获,也算是对自己的一个督促,笔记内容不会照搬原文,尽量以最简洁的形式阐述原文,对原文内容会有所取舍并且加上自己的感想等,供自己之后查阅,毕竟好记性不如烂笔头( ...
- 计算机神书『编码:隐匿在计算机软硬件背后的语言』
在知乎回答了一个关于书籍推荐的问题:有哪些短小精悍的好书推荐? 如果只推荐一本计算机类的神书,那必然是<编码:隐匿在计算机软硬件背后的语言>. 渴望交流是大多数人的天性.在本书中,&quo ...
- 编码:隐匿在计算机软硬件背后的语言(7)--存储器组织
在上一篇文章编码:隐匿在计算机软硬件背后的语言(6)--反馈与触发器中,我们知道一个反向器.两个与门和两个或非门可以构成一个D型电平触发器.它可以存储一位信息,为了表达地更清晰,我们把输入端和输出端重 ...
- 《编码:隐匿在计算机软硬件背后的语言(Code:The Hidden Language of Computer Hardware and Software)》读书笔记
声明 该文章是阅读<编码:隐匿在计算机软硬件背后的语言>一书之后整理出的读书笔记.若有错误,还需继续修正与增删. Preface 作者Charles Petzold是Windows编程界的 ...
- 【JS】隐匿在计算机软硬件背后的语言
在重温<编码:隐匿在计算机软硬件背后的语言>第12章--二进制加法器时,心血来潮用JS写了一个模拟串行加法器. 测试断言工具TestUtils.js function assertTrue ...
最新文章
- jQuery UI vs Kendo UI jQuery Mobile vs Kendo UI Mobile
- Matlab绘制不同阻尼下的系统响应
- 孤儿进程与僵尸进程[总结]
- oracle rman备份spfile,RMAN备份恢复之SPFILE的恢复(一)
- PDF 翻译神器,再也不担心读不懂英文 Paper 了 | 开发攻略
- Controller层返回字符串
- 怎么找网页源文件位置_原神白铁块位置分布图 原神白铁块怎么找
- laravel-excel文档翻译笔记
- SpringMVC学习笔记(2)-参数绑定的常用方法
- Kinect 2.0 高帧率 同分辨率采集RGB-D图像并保存,并显示人体骨架
- ORACLE 10g下载地址
- 推荐一个网站:编程资料网 http://www.ourdev.net/
- python图片logo_Python logo
- Vant 商品规格sku用法
- 微信公众号图卡片息发送【模拟发送一个小程序信息】
- 蓝牙宠物食物称重碗方案开发
- MS7024 TV Encode digital数字信号转AV/SV配置说明
- Android集成银联支付
- xilinx 7系列FPGA之XADC的学习笔记
- 时间复杂度 P/NP/NPC