正文内容
二进制城市范文
来源:文库
作者:开心麻花
2025-09-18
1

二进制城市范文(精选7篇)

二进制城市 第1篇

数字和它的力量在今天的这种“突爆”式的剧烈发作, 也许得益于它从工业时代开始的与机器和工业资本机制的媾和但是谁知道呢, 历史也许还可以往前推溯, 数字的阴谋也许从人类发明它的时候就悄然开始了到今天, 电脑特别是PC机的发明和互联网的普及应用使得这种媾和得以臻于极致的完美, 莱布尼兹的二进制, 也许还有伏羲的八卦, 被从历史的故纸堆里掏拉出来, 为构建与驱动这种机器 (机器体系) 的运转构造了滴水不漏的语言系统。通过机器的外延, 这一套语言其实也在构建着我们和我们的现实世界:与其说我们在使用它, 不如说我们在按照它的指示去工作和生活, 去交流和沟通, 去构造我们的周遭与世界。

到底是我们在存在, 还是机器在存在?到底这个世界是我们的世界, 还是机器的世界?在今天, 所有这样饱含着天真的人文情感的追问恐怕都要遭到无情的嘲讽和嗤笑了。我们甚至不应该将网络世界称为所谓的“虚拟世界”。虚构之所以成立, 是因为有真实与它对立, 然而在今天, 真实其实早已面目模糊, 不再有任何意义了。

这个世界也许正在变成像《黑客帝国》、像鲍德里亚的《象征交换与死亡》描述的那样:一个由无数的编码按照严格的程序编排而成的系统或母体。我们周边的事物连同我们自己, 其实只是二进制 (系统语言) 里的无数个“0”和“1”。那个充满着自由主义的滥情想象的“多元”, 只不过与城市街头无数的光鲜过客、无数的纷繁景象一样, 是一种即时的幻象、一种速朽的神话罢了。路虽各有不同, 然而大家最终都将殊途同归:都成为机器 (系统) 的一分子。这里须得澄清一个关于现时代的人的变异的事实:其实并不是机器在侵入和渗透我们, 而是我们在主动地变成机器。

二进制城市 第2篇

RFID (Radio Frequency Identification) 射频识别是一种非接触式的自动识别技术, 其原理是通过射频信号自动识别目标对象并获取相关数据。它具有非接触、工作时无需人工干预、标签存储信息量大等优点, 因此RFID技术广泛应用于工业自动化, 商业自动化, 港口货运和交通控制等各个领域。

典型的RFID系统主要包括二个部分:读写器 (Reader) 和标签 (Tag) 。当读写器的射频辐射范围内存在多个标签时就有可能产生冲突, 其碰撞概率与标签数量呈正比, 这种冲突被称为碰撞。目前, RFID防碰撞算法方向的研究, 主要包括基于TDMA (Time Division Multiple Access) 的二进制树搜索算法 (确定性算法) 。

确定性算法的研究主要针对二进制树算法、动态二进制防碰撞算法和后退式防碰撞算法, 他们均是根据标签ID的唯一性来确定标签进行通信。二进制和后退式二进制算法是对标签整个代码进行分析, 效率不高;动态二进制树算法在识别过程中, 当发生碰撞时按照碰撞的最高位, 采用跳跃式向前的方式;后退式二进制算法在识别过程中, 当时别一个标签后采用后退式的方式退到上次树的节点进行读取。

二、改进的二进制防碰撞算法的实现

目前有很多基于二进制树防碰撞算法的改进算法, 大体思路可以两种方式:一种是通过减少时隙数量;另外一种是通过减少时隙内传输时数据量。本文提出改进算法结合以上两种方式, 并且利用四种机制:曼彻斯特编码机制;碰撞位传输机制;后退机制;一位识别机制。

改进的二进制防碰撞算法的操作流程主要步骤如下, 流程图见图2:1.读写器发送REQUEST (111111) 命令, 场区内所有标签对此命令做出应答将自己的标签发送给读写器。2.读写器检测收到的信号, 如果没有信号则转到步骤1。如果有信号则转到步骤3。3读写器对所有电子标签做出的应答信号进行译码, 如果是有碰撞发生, 则确认其碰撞发生的具体比特位, 并转入步骤4。如果没有发生碰撞, 则执行SELECT、READ-DATE、UNSELECT命令。4.读写器根据步骤3所得到的碰撞比特位信息, 读写器将碰撞的比特位置“1”, 未碰撞的比特位置“0”, 得到下一个读写器发送REQUEST (EPC, 0) 指令。标签在接到指令后将EPC于自己的ID进行比较, 锁定比特位置为“1”的比特值, 并将其保存。同时要求锁定位中最高位为“0”的标签对此命令做出应答, 回复除最高位以外的其他所有碰撞位。当出现一位碰撞时, 转到步骤6;如果没有发生碰撞, 则执行SELECT、READ-DATE、UNSELECT命令;如果产生碰撞则继续下一轮查询直至最后一个标签应答, 转到步骤5。5.读写器发送REQUES (1) 命令, 该指令要求锁定位置最高位为“1”的标签将自己除最高位意外的剩余几位碰撞位发送给读写器。当出现一位碰撞时, 转到步骤6;如果没有发生碰撞, 则执行SELECT、READ-DATE、UNSELECT命令;如果产生碰撞则继续下一轮查询直至最后一个标签应答, 转到步骤7。6.当产生一位碰撞时, 根据非“0”即“1”的原则识别两个标签, 读写器对碰撞位为“0”的标签发送SELECT、READ-DATE和UNSELECT指令;而后读写器对碰撞位为“1”的标签发送SELECT、READ-DATE和UNSELECT指令。7.待所有电子标签都被识别出来, 识别过程结束。

三、改进算法分析

改进算法通过减少时隙数量和时隙内数据传输量从而提升算法性能, 其结合了深度优先算法和按比特位算法的优点。

在寻呼次数上后退式二进制算法分辨n个标签共需要S (n) =2n-1次Request命令。本文提出的改进算法通过1位碰撞识别的方式减少寻呼次数, 其S (n) =2n-1-c。c是一位碰撞的次数, 在[0, integ (n/2-1) ]取值。

利用MATLAB仿真工具, 对后退式二进制防碰撞算法和本文改进的二进制防碰撞算法仿真模拟。设定EPC码为7位, 则系统容量为128, 其仿真结果表明当系统逐渐趋于饱和, 其优势越明显, 其寻呼次数接近于后退式二进制防碰撞算法的1/2。这说明本文改进算法在系统标签数量大时比较其他算法有寻呼次数和传输数据的优势, 尤其适用于当今技术发展对大标签量识别的需求。见图3。

四、结束语

本文创新点在于针对RFID的技术日益严重的标签冲突问题, 提出针对一般冲突情况采用基于二进制算法的改进算法, 不仅可以动态发送指令的长度和发送值, 而且能根据二进制一位碰撞的特性一次寻呼多目标同时识别, 从而极大的提升了防碰撞的效率。同时通过仿真的验证, 本文提出的改进算法在寻呼次数, 传输的比特长度, 传输时延等各项指标都有明显提升。通过对本文提出的算法的特性分析, 当标签数量越接近饱和数量, 其算法的优势越明显, 尤为适合标签数量大的仓库, 物流系统使用, 对实际生产生活有非常大的经济效益。

摘要:防碰撞算法是RFID系统中的关键技术, 更是近年RFID研究的热点领域。基于现有二进制树算法, 本文提出了一种改进的具有回退机制和一位碰撞识别的二进制树算法。该改进二进制树算法通过减少时隙数量和减少时隙内传输数据量, 提高传输速率和减低时延。

关键词:RFID,防碰撞,二进制树算法,碰撞位

参考文献

[1]M.Bhuptani, S.Moradpour.RFID Field Guide:Deploying Radio Frequency Identification Systems.Prentice Hall, 2005.

[2]Cheng T, Jin L.Analysis and Simulation of RFID Anticollision Algorithms.In:The 9th International Conference on Advanced Communication Technology.Phoenix Park, Korea:2007:12-14.

[3]Klaus Finkenzeller, 射频识别 (RFID) 技术-无线电感应的应答器和非接触IC卡的原理[M].2版, 陈天才, 编译.电子工业出版社, 2001.

[4]D.Shih, P.L.Sun, D.C.Yen, S.M.Huang.Taxonomy and Survey of RFID Anti-collision protocols[J].Computer and communications, 2006, 29 (11) :2150-2166.

[5]胡正超.基于二进制树的RFID防碰撞算法的研究[M].2009.

[6]丁俊.RFID系统中基于二进制搜索的防冲突算法研究[D].天津大学, 2010.

[7]廉国斌.无线射频识别系统中的防碰撞算法研究[D].上海交通大学, 2009.

[8]杨威.基于RFID系统二进制树防碰撞算法的研究[D].武汉理工大学, 2011.

让keilC支持二进制 第3篇

一、使用二进制常数

只须在二进制数前加b即可,例如:b 10101010。

为了清晰也可用带分隔符的常数如:b 1010_1010。

另外为了方便使用,提供了几个二进制应用函数,源代码并说明都在头文件中,供参考。

输入二进制数:调用getbin () 函数通过串口输入二进制数。

输出二进制数:调用putbin () 函数通过串口输出二进制数。

下面是一个使用二进制数的例子,简单吧!

二、存在问题

如果目标程序未调用getbin () 或putbin () 编译器将提出警告:

ke il C对未使用的用户自定义函数总是提出警告,并且占用代码空间,而Keil C定义的函数则不提出警告。

三、解决方法

选择Project-Options-LX51 Misc在Mise c ontrols输入RU (REMOVEUNUSED)。

注: (1) 如果没有Options-LX51 Misc页,请选择Options-Device-Use Extended Linker (LX51) ins te a d of BL51。

(2) 低版本(低于keil7.50)将提示连接错误,目标不能建立,此时只能注释掉函数。

二进制城市 第4篇

在进行计算机基础理论学习时, 进制转换是十分抽象的知识点, 通常带来老师讲起来费力、同学不理解的状况;另外, 通过专利检索发现, 虽然目前世界上进制转换器种类较多, 但是大都应用了传感器, 还没有二进制到十进制纯机械传动的转换装置。

基于以上两点, 设计开发了纯机械式二进制到十进制转换装置。本设计中, 通过转动二进制数字盘 (即输入一个二进制数) , 实现十进制数字盘自行转出相应十进制数字 (即输出一个十进制数) 。该转换装置的内部传动机构主要是由一个包含不完全齿轮的齿轮传动机构构成, 利用不完全齿轮机构的间歇运动特性, 实现精确转换, 最终达到逢十进一的效果。本装置不仅可作为计算机教学中的教具, 同时也可作为现有计算工具的有益补充。

1 二进制机构设计

如图1, 二进制装置由数字显示机构、进制间转换机构、进制内进位机构组成。所有机构由轴连接、轴承支撑。在连接方式中, 齿轮通过单向轴承支撑方式的机构如图2所示, 外框架或齿轮通过普通轴承支撑方式的机构如图3所示。

2 二进制装置的构件设计

2.1 数字显示机构

通过转动齿轮带动显示盘的标数一起转动, 达到同步的目的。数字显示机构俯视图如图4所示。

2.2 进制间各位“转换机构”

利用不同传动比的齿轮副, 实现二进制到十进制的进制各个相应位的对应关系。进制间传动比示意图如图5所示, 进制间各齿轮参数见表1。

2.3 进制间的“分位机构”

通过转动二进制中一个齿轮, 从而引起十进制中两个齿轮的转动。例如, 二进制中的第五位, 其数学意义为24=16, 传动比为1∶16, 此传动比太大。“分位机构”通过转动二进制第五位的齿轮, 带动两个齿轮转动, 即十进制中十位转动1个单位, 个位转动6个单位, 这样1∶16的传动比就被分解为1∶1、1∶6, 传动比缩小了, 但同样达到了1∶16的传动效果, 此设计使所需的齿轮副的传动比永远控制在10以下。分位机构示意简图见图6, 分位机构各齿轮参数见表2。

2.4 进制内的“进位机构”

通过不完全齿轮的间歇起作用, 实现逢十进一的进位目的。此进位机构都装有单向轴承, 当单向轴承1上面的齿轮正向旋转时, 可带动单向轴承1和下面的轴转动, 从而带动单向轴承2及其上面的齿轮连接的数字盘转动。当单向轴承1上面的齿轮逆向旋转时, 由于单向轴承的原因, 只有单向轴承1和下面的轴转动, 轴不转动, 所以此装置可实现正向转动可进位, 逆向转动相互之间无影响的效果。下面的齿轮为不完全齿轮, 传动比为10∶1, 从而实现逢十进一的效果。图7为进位装置示意图。

2.5 汇总处理机构

通过单向轴承的累加作用, 达到数据相加的效果。本装置所用的单向轴承只能向一个方向旋转, 达到正转可以进位, 反转则没有任何影响的效果。图8为单向轴承实物图。

3 结论

该装置能够通过转动数字盘, 实现给定一个二进制数字, 相应地在十进制数字盘自行旋转出十进制数字。因此, 该装置不仅可作为计算机教学中的教具, 同时也可作为现有计算工具的有益补充。

参考文献

[1]同济大学数学系.高等数学[M].北京:高等教育出版社, 2007.

[2]闻邦椿.机械设计手册[M].北京:机械工业出版社, 2010.

[3]濮良贵, 纪名刚.机械设计[M].7版.北京:高等教育出版社, 2001.

[4]大连理工大学工程图学教研室.机械制图[M].北京:高等教育出版社, 2007.

二进制软件防篡改技术研究 第5篇

1 概述

1.1 软件篡改的实现方法

软件篡改通常发生在攻击者对代码进行有效分析之后, 具体说来有三种实现方法: (1) 在可执行文件运行之前, 删掉其中的一些代码, 同时/或者往其中加一些代码; (2) 从正在运行的程序中, 删掉一些代码, 同时/或者往其中加入一些代码; (3) 借助模拟器、调试器或修改过的操作系统等工具, 影响程序运行时的行为。其中 (1) 属于静态篡改, 即直接修改二进制代码, 原代码不会进入内存。 (2) 、 (3) 属于动态篡改, 即边运行边篡改, 原代码要进入内存, 与调试的原理比较相似。

1.2 防篡改技术的主要目标

防篡改技术的主要目标在于检测对程序的修改行为并做出相应的反应, 因此其重要的技术原则有两条: (1) 能够准确地检测到正常功能之外的对程序进行的异常修改行为; (2) 对这种修改行为进行恰当的、有效的反应。目前常见的软件防篡改实现方法基本上都是基于这两条原则实现的, 即“检测-响应”机制。从概念上来说, 一个完整的防篡改系统应该是由CHECK和RESPOND两个函数组成, 如图1所示, CHECK函数用来测试异常修改行为是否发生并返回结果, 而RESPOND函数则根据CHECK函数的返回结果来判断是否触发对篡改行为的响应。

防篡改的具体实现方法有基于源代码和基于二进制代码两种, 由于源代码方法有一定的局限性, 本文主要研究基于二进制代码的软件防篡改技术。

2 软件防篡改实现技术

根据CHECK和RESPOND函数的实现思想不同, 当前主流的软件防篡改实现方法可以分为4种, 分别是: (1) 基于保护网络的防篡改方法, (2) 基于Oblivious Hashing的防篡改方法, (3) 远程防篡改方法, 以及 (4) 基于监测运行环境的防篡改方法。

2.1 保护网络

Hoi Chang建立了一种由称之为guards的代码片段组成的保护网络[1], guards分为两类, 一类是校验和代码, 用来计算一段程序的校验和并验证完整性, 即检查是否被篡改。一旦发现被篡改, 校验和代码会做出反应, 触发一定的行为, 比如使软件无法继续使用、中断程序等等, 即检查完整性功能。另一类是修复代码, 用来将被破坏的代码和数据恢复到原来的样子, 具体方法是在别处存放该段代码的原始备份, 一旦被篡改则原样复制过来, 即自治愈功能。

2.2 Oblivious Hashing

实际上Hoi Chang的保护网络所运用的是防篡改技术中非常普遍的一种方法:自监测原理, 基本的思想就是计算某一代码区域的hash值, 并根据这个值做出反应。可以把hash值作为程序中将要进行的算数运算中的一部分数据, 或者把hash值用在其他变量地址的计算上。然而, 上述自监测算法有两个根本性缺陷: (1) 读取自己代码段的操作很容易被检测出来, 即算法隐蔽性不高; (2) 只检查代码正确性, 攻击者可以修改运行时的数据来影响程序行为, 比如使用调试器, 在某个关键函数返回之前修改其返回值, 即不能抗动态篡改。

由此产生了另一种防篡改思想:oblivious hashing[2], 即“易遭忽视的hashing”, 因为此方法中hash是作为软件的一部分在正常的计算过程中被计算出来的, 攻击者很容易忽视它。图2显示了这种方法的基本原理, 即通过结合源代码中的指令和内存中的指令来计算hash值。

Y.Chen提出了一种巧妙的方法[3], 直接在源码中插入了hash计算代码, 根据变量的值和控制流控制语句输出结果计算hash。它不记录程序trace, 而是往程序中插入相关代码, 计算trace的hash, 来监测变量的改变和控制流执行情况。可以通过调整所插入的, 用以计算hash的代码数量来调和性能开销和保护级别之间的矛盾。

Mattias Jacob和Mariusz H.Jakubowski提出了另一种算法[3]。x86体系结构使用变长指令编码方式且指令无需对齐, 可以利用这两个特性, 把指令相互重叠, 相互重叠的指令甚至可以属于两个不同的基本块。这个算法就是通过重叠基本块中的x86指令进行防篡改, 当一个基本块执行的时候, 另一个基本块的hash就被它“顺便”算了出来。这一技术的优点在于, 计算hash不需要显式地读取代码, 所以内存复制的攻击方法对这个是无效的。这个算法的缺点是, 无法预计监测代码的及时性。

本节所阐述的方法的根本原理在于, 运行时检查程序中使用的数据值是否在正常的取值范围之内, 程序的控制流是否沿着一个合理的路径流动。

2.3 远程防篡改

远程防篡改的思想是, 将想要保护的程序C运行在攻击者控制下的不可信主机 (客户端) 上, 客户端必须和开发者的主机 (服务器) 上一个可信的程序S保持通信。除了向客户端提供服务, 服务器还必须对C可能遭到的篡改进行监测和响应。

Xiangyu Zhang把程序拆成两个部分[4], 一个是可以放在客户端中运行的公开部分, 另一个是放在服务器里运行的隐藏部分。此算法通过只考虑标量数据 (处理数组和链式结构数据的函数全部放在客户端中) 和确保客户端和服务器处于同一个局域网中这两个方法来解决网络延迟和带宽这两个问题。

Christian Collberg将反分析和防篡改的方法相结合, 具体说来是将反静态分析的自修改代码的思想运用在了这种远程防篡改的机制上。图3显示了这种远程防篡改方法的运行原理。通过经常变化客户端程序中的代码, 使它难以分析。理想情况下, 攻击者将会发现客户端程序中的代码变化太快, 以至于在他完成分析并对当前的客户端程序进行修改之前, 服务器又发了一个新的程序过来。然而, 这个思路虽然很好, 却还仅仅停留在理论上, 目前还没有已知系统实现了这个通过不断改变代码进行防篡改的想法。

2.4. 监测运行环境

对于使用了自监测原理的防篡改方法, 攻击者早已形成了与之对应的攻击方法。攻击有两种方法: (1) 想办法找到程序中的监测代码或相应代码, 然后删掉; (2) 从外部进行攻击, 即修改程序执行的环境。

Glen Wurster提出了一种攻击自hash算法, 该算法的关键点在于, 基于hash的防篡改算法中, 代码会被以两种形式访问:①当被执行时作为代码, ②当计算hash时作为数据。当把代码当作数据读取的时候, 应该获得未经修改的代码, 这可以保证代码hash值不变;当执行代码时, 应执行修改后的代码。此方法将同一个虚拟内存地址分别映射到两个不同的物理内存地址上:如果被访问的是代码, 则映射其中一个地址;如果被访问的是数据, 则映射到另一个地址上。对防篡改的攻击有以下三个步骤:i.把程序P复制一份, 复制品称为Porig;ii.对P′进行修改, 将其制成破解版P;iii.修改操作系统的内核K, 使计算机在读取数据时从Porig中读取, 而读取代码时则从P′中读取。这一攻击的具体实现方式有赖于具体的处理器型号和操作系统中内存管理模块的设计方式。

为了应对这种攻击, Jonathon Giffin提出了一种思路:向程序中加入新的代码, 监测程序是否运行在一个可信的环境中。他使用自修改代码实现这种对抗攻击的保护方法, 如果程序监测到自己运行在一个修改只会作用于数据而不会影响代码的系统中, 它就会调用正常的篡改响应代码。

3 分析与评价

3.1 小结

综上所述, 可以总结出5种能使程序变得难以修改的基本方法:

(1) 向程序中加入新的代码, 监测程序中的代码是否遭到了修改。Hoi Chang的保护网络算法使用了这种方法。

(2) 向程序中加入新的代码, 监测程序是否运行在一个可信的环境中。Jonathon Giffin的环境监测算法使用了这种思想。

(3) 运行时检查程序中使用的数据值是否在正常的取值范围之内, 程序的控制流是否沿着一个合理的路径流动。Oblivious Hashing一节中的两种算法使用了这种思想。

(4) 远程防篡改:把程序割裂成两个部分, 其中一个部分可以运行在服务器或者抗篡改硬件中, 以避免被攻击者修改。Xiangyu Zhang的拆分函数方法使用了这种思想。

(5) 使用代码混淆算法使攻击者难以理解程序, 因而也就难以篡改程序。Christian Collberg的自修改代码机制使用了这种方法。

3.2 评价体系

在软件防篡改技术研究领域中, 尚无被普遍接受的评价体系。本文借鉴Christian Collberg提出的代码混淆的评价定义, 建立了一套防篡改适用的评价标准, 主要从防篡改强度、开销、隐蔽性三个方面对上述防篡改实现方法作定性分析。

防篡改强度表示该算法对抗攻击者进行篡改的效果, 可分为抗静态篡改和抗动态篡改两个方面。开销分为空间开销和性能开销两个方面, 空间开销包括代码增加的大小、对于硬件和其他环境条件的需求等;性能开销主要关注增加保护代码之后程序运行时间的增加。隐蔽性表示该算法是否容易被攻击者发现并进行篡改攻击。

Hoi Chang的保护网络方法有一个非常好的特性就是其提供的安全性可以由我们自己随意调节, 具体说来, 就是通过调整保护代码的数量和防御图的复杂度来做到这一点。远程防篡改方法从理论上来说, 对于动态篡改的抵抗效果是非常好的。然而, Xiangyu Zhang的拆分函数方法显然对服务器端的计算能力有很高的要求, 对网络实时带宽的要求也比较高, 因此实现成本是很高的。在性能开销方面, 如果硬件条件不够好, 会造成较大的延迟。此方法的性能开销往往依赖于有多少代码存放在服务器中。

监测运行环境的实现实际上是自修改代码的一种应用。对于以内存复制为主的动态篡改方式, 这种方法效果还是比较明显的。据该算法的作者估计, 在最坏的情况下将会导致一个与轻量级的系统调用近似的开销。

4 防篡改技术的展望

通过对当前主流软件防篡改技术的介绍, 可以看出基本上没有突破“检测-响应”机制的框架。然而, 响应部分往往是整个防篡改机制中的弱点, 大部分攻击防篡改的破解技术以此作为突破口, 一旦攻破, 会使整个防篡改机制失去功效。另外, 当前软件破解技术的主流倾向于将防篡改技术与其他软件反破解技术进行结合。如防篡改技术与代码混淆技术结合, 增加“检测-响应”机制的隐蔽性;防篡改技术与软件水印技术结合, 由于水印技术中的完整性验证要求软件遭到修改后水印即被破坏, 实际上与防篡改技术的原理有相通之处, 如何将二者结合亦是一项有意义的课题;总而言之, 将防篡改技术与其他软件保护技术相结合能够大大增加软件保护的力度。

摘要:随着软件安全性问题日益严重, 软件防篡改技术作为软件保护的重要手段之一, 越来越得到国内外研究者的重视。本文首先介绍软件破解与保护的基本概念, 针对软件防篡改的主要目标, 即能够准确地检测到正常功能之外的对程序进行的异常修改行为;对这种修改行为进行恰当的、有效的反应, 重点介绍了几种基于“检测-响应”的二进制软件防篡改技术, 对其具体实现方法进行分类和总结, 详细分析和讨论各类方法的优劣和局限性, 提出了一套评价体系, 并展望了软件防篡改技术的发展前景, 提出了自己的见解。

关键词:软件保护,防篡改,检测-响应

参考文献

[1]Chang H, Atallah M J.Protecting software by guards[M]//Security and privacy in digital rights management.Springer Berlin Heidelberg, 2002:160-175.

[2]Y.Chen, R.Venkatesan, M.Cary, R.Pang, S.Sinha, and M.Jakubowski.Oblivious hashing:A stealthy software integrity verification primitive.In 5th Information Hiding Workshop (IHW) , pages 400-414, October 2002.Springer LNCS 2578.

信息的编码:四位二进制编码 第6篇

确定一组独立二值量的编码空间

独立的两个二值量是指他们之间可以彼此独立地改变状态, 如键盘上的两个键, 一个键按下并不会影响另一个键的状态, 它们是彼此独立的, 但如果将两个键用一根木杆粘接起来, 它们彼此之间就不再独立了。

在Scratch传感器板中, 端口A、B、C、D是四个独立的二值量, 它们各自的两种状态放置到图1所示的如果的条件判断当中, 不同的组合就构成了不同的状态。

我们将LabPlusTMScratch传感器板的四个按键接入A~D四个端口上 (如图2) , 四个按键便可控制四个端口的逻辑值。

当然, 我们可以通过复杂的逻辑关系, 写一个非常长的逻辑表达式来表述不同的状态, 但此次我们用0表示按键弹起 (默认状态) , 1表示按键按下, 以ABCD的次序来建立一个0和1构成的字符串, 这个四位的字符串, 用变量表示 (如下页图3) , 用来侦测当前状态。

按下空格之后, 任意按下这四个按键的一种组合, 程序会记录当前的状态到变量中, 当然我们可以使用枚举的方法列出这16种状态, 也可以发挥计算机的优势, 即我们用一个链表来保存所有的状态, 接下来随机地“乱按”出一种状态, 让计算机判断该状态是否是一个之前没有发现的状态, 并判断是否要放在链表中 (如图4) 。

很快16种状态就采集完成了, 如果我们现在有一个简单的需求, 即用二进制的组合表示0~9这10个数字, 状态空间中状态的数目16已经能够满足将0~9这10个数字一一对应起来的要求, 下一步就需要建立一种对应规则, 即编码。

将二值量和需要描述的信息对应起来

图5左图的链表表示的是随机生成的16种状态, 这16种状态的枚举是没有规律的, 大概通过100次的随机按键, 会把这16种状态收集齐全, 状态数目越多, 越难以通过枚举的方法得到所有状态。因此, 图5右图所示使用的排列组合方法, 依据一些规律, 能找到这16种状态, 但是这种方法的效率仍然不够高。无论是随机组合得到的16种状态, 还是用排列组合的方法得到的16种状态, 我们都可以挑选前10种状态和需要表述的0~9的数字相对应。

考虑到在没有任何按键按下时, 系统的默认状态为0000, 因此默认状态不加入编码, 将图5右图的状态与0~9的数字对应, 得到了表1所示的编码表, 至此初步完成了编码的过程。

表1的结论说明至多使用四个按键当中的两个, 我们就可以独立表示出10个不同的信息, 根据编码表我们可以将当前状态转化为十进制数输出。我们使用如下页图6所示的广播, 就可以将用四个按键的组合输出0~9所表示的数字。

但是如果做实验会发现当输入数字4的时候, 即按键A和按键B同时按下, 有时系统最终显示的可能是0或者1, 这是因为, 松开按键的瞬间, 有可能按键A比按键B后松开, 系统会认为, 只有A按下, 因此认为当前状态为1000, 输出0, 同理有可能输出1, 这个问题我们会在之后的文章中解决。

二进制和十进制之间的转化

用枚举的方法得到所有状态虽然比较容易理解, 但是当要处理的二值量的数目增多, 即状态的位数增多后, 我们将会越来越难以枚举所有状态, 因此有必要用更加科学的方法将所有状态表示出来。首先, 让我们回顾一下十进制的情况, 假设A、B、C、D四个端口每个端口都有0~9共10种状态, 那么它们的组合自然是从0000~9999这10000种状态, 我们获取每个状态的方法是, 从最小的状态0000开始, 每次给当前状态加1, 当我们加9次1得到状态0009之后, 我们需要运用进位法则即当当前位已经为最高位9的时候, 需要将当前位归0, 之后, 将上一位加1。运用类似的规则, 我们发现二进制的最高位为1, 即0001再加1之后, 末尾的一位应该是0, 上一位应该加1, 即变成0010。用这种加法法则, 我们能够从最小的状态0000加起, 一直加到1111, 至此得到二进制转10进制的编码表。

我们可以将A端口不同, 其余端口相同的二进制状态加以比较, 发现它们都相差8;同理B端口不同, 其余端口相同的二进制状态之间相差4;C端口不同, 其余端口相同的二进制状态相差2;D端口不同, 其余端口相同的各个状态之间相差1。

这个规律可以表示为:十进制数=A×8+B×4+C×2+D×1。其中A、B、C、D为各自端口的当前状态, 0表示弹起, 1表示按下。如果用上面的公式来输入0~9的数字, 其中默认需要将转化的十进制数减1, 得到图7所示的输出结果。

至此, 我们用科学探究的方法, 研究了如何用四个独立的二进制数表示0~9共10个数字, 在解决这个问题的过程中, 我们发现了四个独立二进制数所能表示的状态总数, 并且知道了如何建立一个编码表, 找到了二进制的进位法则, 并且通过对这个法则的深入研究发现了二进制数转十进制数的转化规律, 并且依照这个规律将程序简化。本单元的内容在整个感测与控制技术的课程体系中处于非常核心的位置, 二进制的编码是从数字化的开始也是通信技术的基础。本章内容, 期望通过探究的方式, 而不是讲授, 让学生理解为什么二进制和十进制的转化方式是这样的, 这种讲法, 在之前的信息技术教材中是少有的。而将科学探究的过程引入到信息技术教学中, 将原本“转换公式”这种程序性知识, 转化为“基于项目的学习”的过程性知识, 是信息技术基础理论教学视角的一种转变, 而使用科学探究的方法, 让学生体验学科专家类似的研究过程, 也是为了提高学生面对复杂的真实情境的问题解决能力, 这种科学探究的方法, 将会在后续文章中反复涉及。

参考文献

二进制条纹相移法三维形貌测量 第7篇

关键词:二进制条纹图(黑白条纹图),九步相移法,三维测量,相位解包裹

物体的三维形貌测量是获取物体表面形态特征的一种重要手段,近几十年来已经有很多针对静态物体三维形貌测量方法的出现,其中最具代表性的便是光学测量[1]。相移法是光学测量中的一种典型方法,它通过相移产生多幅具有一定相移量的变形条纹图,针对任何一个测点可以联立3个以上的方程组,进而求解出相位[2]。

而二进制条纹相移法相对传统的正弦条纹图相移法具有明显优势,不仅增强条纹抗干扰性,还避免了正弦条纹图非正弦性问题[3]。文中将黑白条纹图和9步相移法引入测量中, 该方法代替传统的投影正弦光栅条纹图,由计算机产生黑白条纹图并投影,而且二进制条纹图抗干扰性更强,该方法为三维形貌测量提供了一种新的方法和思路。Matlab仿真验证了该方法的可行性。

1三维形貌测量原理

1.1传统N步相移法测量原理

本文所提的相移法是等步长相移法,传统的是投影N幅正弦条纹图,相移量为,则探测到投影在物体表面的条纹图光强表达式如下:

式(1)中,是平均强度,是调制强度,是需要求出的相位,n=1,2,3……N。联立N个强度表达式可以求出:

N步相移法是先后分别向参考平面和待测物体表面投影N幅正弦条纹图并利用相移法解调出相位,两次相位求差即得到携带有物体表面信息的包裹相位图,由于相位被包裹在[-π,π] 主值内,还需进行相位展开。最后再由三维模型得到物体的三维坐标,实现物体三维测量。

1.2二进制条纹相移法测量原理

与传统的N步相移法投影正弦条纹图不同,二进制条纹相移法用二进制条纹(本文使用黑白条纹图)代替正弦条纹图,同样分别向参考平面和待测物体表面投射N幅相移黑白条纹图,由CCD相机记录相应图像并进行N步相移法处理。

为方便起见,本文通过分析方波函数来介绍二进制条纹相移法测量原理。

通常,周期为2π 的标准方波函数可以描述如下:

式(5)中,n是整数,对s(x) 进行傅里叶变换可以得到它的傅里叶级数表达式:

由式(4)可以看出,与理想的正弦条纹图仅包含基频分量不同,二进制条纹图(黑白条纹图)含有大量谐波分量, 直接对其进行N步相移法处理将会产生误差,而且N取值不同会带来不同误差。Zhang通过仿真实验得出重要结论:对二进制条纹图解调相位时利用奇数步相移法比偶数步相移法更优,误差更小;对于只考虑17次谐波以下分量的二进制条纹图利用9步相移法求解相位不会产生任何误差。

本文提出的二进制条纹相移法即是由计算机产生标准黑白条纹图,设条纹周期为P(宽度),分别生成相移量为0、 P/9、2P/9、3P/9……8P/9的9张标准黑白条纹图,分别投向参考平面和待测物体表面,利用式(2) 求出包裹相位图并解包裹得到连续相位图。

1.3 Itoh一维行列逐点法相位解包裹算法

相移法求解相位时使用了反正切函数,这导致相位被包裹在主值[-π,π] 之间,使得相位图出现截断现象,为了得到真实连续的绝对相位,必须对包裹相位进行解包裹,常用的解包裹算法很多,主要有Itoh一维行列逐点法[4]、最小二乘法[5]、基于可靠度排序的非连续路径算法等,本文进行Matlab仿真时采用的是最基础的Itoh一维行列逐点法, 由于仿真的是无噪声的理想状态,采用最基础的方法即可得到预期结果。

行列逐点法原理如下:

式(5)中

是展开后的真实相位,是包裹相位。相位展开的仿真结果在第三章介绍。

2 Matlab仿真及结果

利用Matlab2013软件进行仿真。条纹周期P,相移量P/9。首先由软件编程仿真一个三维物体,见图1。然后模拟生成9张具有固定相移的黑白条纹图,见图2。图3是模拟黑白条纹图投影到待测物体表面的变形条纹图,利用9步相移法分别得到参考平面和待测物体的表面包裹相位图,然后采用行列逐点法解包裹得到连续的相位图。最后,恢复出待测物体形貌,见图4。

从恢复的待测物体形貌结果可以看出,9步相移法用于投影黑白条纹图的相位提取是可行的,但是恢复结果有较大误差,从相位连续性问题上可以看出解包裹算法的相位展开效果有待提高,二进制条纹图的周期P需要研究调整得到最适合9步相移法的匹配。

3总结

相关文章
2024中考体育考试安全预案

2024中考体育考试安全预案

2024中考体育考试安全预案(精选13篇)2024中考体育考试安全预案 第1篇清涧分部2014年初中毕业学业理科实验操作、体育考试安全工作预案为...

1
2025-09-19
2024国培总结

2024国培总结

2024国培总结(精选9篇)2024国培总结 第1篇2017教师国培学习总结当今社会,教事业迅猛发展,各类培训数不胜数,而“国培”对于我们教育发...

1
2025-09-19
2024年单位与单位的新年联欢会主持稿及串词

2024年单位与单位的新年联欢会主持稿及串词

2024年单位与单位的新年联欢会主持稿及串词(精选5篇)2024年单位与单位的新年联欢会主持稿及串词 第1篇2018年单位与单位的新年联欢会主持...

1
2025-09-19
2024年上海市崇明县中考一模语文试题及答案

2024年上海市崇明县中考一模语文试题及答案

2024年上海市崇明县中考一模语文试题及答案(精选6篇)2024年上海市崇明县中考一模语文试题及答案 第1篇2017年崇明区初三一模语文试题(一...

1
2025-09-19
2010—2011学年度第一学期六年级语文教学计划

2010—2011学年度第一学期六年级语文教学计划

2010—2011学年度第一学期六年级语文教学计划(精选13篇)2010—2011学年度第一学期六年级语文教学计划 第1篇2010—2011学年下学期六年级...

1
2025-09-19
2011《农业农村工作知识》高频考点

2011《农业农村工作知识》高频考点

2011《农业农村工作知识》高频考点(精选12篇)2011《农业农村工作知识》高频考点 第1篇2011公考备考:《农业农村工作知识》高频考点2011-0...

1
2025-09-19
以案促改主持词

以案促改主持词

以案促改主持词(精选4篇)以案促改主持词 第1篇主持词同志们:根据市委要求,今天我们在这里召开“××局开展案件剖析做好以案促改工作动...

1
2025-09-19
2024致自己的励志说说

2024致自己的励志说说

2024致自己的励志说说(精选5篇)2024致自己的励志说说 第1篇人生,说到底,活的是心情。人活得累,是因为能左右你心情的东西太多。以下是...

1
2025-09-19
付费阅读
确认删除?
回到顶部