二进制格雷码与自然二进制码的互换

2016-01-29 12:11 4 1 收藏

二进制格雷码与自然二进制码的互换,二进制格雷码与自然二进制码的互换

【 tulaoshi.com - C语言心得技巧 】

二进制格雷码与自然二进制码的互换

中国科学院光电技术研究所 游志宇

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

示例工程下载

  在精确定位控制系统中,为了提高控制精度,准确测量控制对象的位置是十分重要的。目前,检测位置的办法有两种:其一是使用位置传感器,测量到的位移量由变送器经A/D转换成数字量送至系统进行进一步处理。此方法精度高,但在多路、长距离位置监控系统中,由于其成本昂贵,安装困难,因此并不实用;其二是采用光电轴角编码器进行精确位置控制。光电轴角编码器根据其刻度方法及信号输出形式,可分为增量式、绝对式以及混合式三种。而绝对式编码器是直接输出数字量的传感器,它是利用自然二进制或循环二进制(格雷码)方式进行光电转换的,编码的设计一般是采用自然二进制码、循环二进制码、二进制补码等。特点是不要计数器,在转轴的任意位置都可读出一个固定的与位置相对应的数字码;抗干扰能力强,没用累积误差;电源切断后位置信息不会丢失,但分辨率是由二进制的位数决定的,根据不同的精度要求,可以选择不同的分辨率即位数。目前有10位、11位、12位、13位、14位或更高位等多种。
  其中采用循环二进制编码的绝对式编码器,其输出信号是一种数字排序,不是权重码,每一位没有确定的大小,不能直接进行比较大小和算术运算,也不能直接转换成其他信号,要经过一次码变换,变成自然二进制码,在由上位机读取以实现相应的控制。而在码制变换中有不同的处理方式,本文着重介绍二进制格雷码与自然二进制码的互换。

一、格雷码(又叫循环二进制码或反射二进制码)介绍

  在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,自然二进制码可以直接由数/模转换器转换成模拟信号,但某些情况,例如从十进制的3转换成4时二进制码的每一位都要变,使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它是一种数字排序系统,其中的所有相邻整数在它们的数字表示中只有一个数字不同。它在任意两个相邻的数之间转换时,只有一个数位发生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。另外由于最大数与最小数之间也仅一个数不同,故通常又叫格雷反射码或循环码。下表为几种自然二进制码与格雷码的对照表:

十进制数 自然二进制数 格雷码 十进制数 自然二进制数 格雷码 0 0000 0000 8 1000 1100 1 0001 0001 9 1001 1101 2 0010 0011 10 1010

来源:http://www.tulaoshi.com/n/20160129/1484982.html

延伸阅读
《二进制领域》游戏评测 游戏简介   《二进制领域》由开发了《如龙》系列的知名制作人名越稔洋打造,是一款追求在线对战乐趣的射击游戏。故事发生在2080年的东京,人类为了生存而与背叛的机器人展开厮杀。本作中,玩家们将和多名同伴一起行动,采用互相协力来进行战斗的Team Action,是一款以团队行动为主题的动作射击游戏。玩家们必须根...
《二进制领域》游戏的配置要求   电脑型号          X86 兼容 台式电脑   操作系统          Windows XP 专业版 32位 SP3 ( DirectX 9.0c )   处理器            AMD Semp...
标签: PHP
如何存取二进制文件,用以下代码说明   首先创建测试表testtable CREATE TABLE testtable ( id INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,filename CHAR(255),data LONGBLOB ); 将文件存入表中 <?php mysql_connect( "localhost", "root", "password"); //连接数据库 mysql_sele...
标签: 电脑入门
以4bit(计算方便一点,和16bit是一样的)做检验和来验证。 建设原始数据为 1100 , 1010 , 0000(校验位) 那么把他们按照4bit一组进行按位取反相加。 1100取反0011 , 1010取反是0101,0011加上0101 是1000,填入到校验位后 1100 , 1010 , 1000 那么这个就是要发送的数据。收到数据后同样进行按位取反相加。0011+0101+0111 =1111;全...
//十进制转二进制 Console.WriteLine(Convert.ToString(69, 2)); //十进制转八进制 Console.WriteLine(Convert.ToString(69, 8)); //十进制转十六进制 Console.WriteLine(Convert.ToString(69, 16)); //二进制转十进制 Console.WriteLine(Convert.ToInt32(”100111101″, 2)); //八进制转十进制 Console.WriteLine(Convert.ToInt32(”...

经验教程

653

收藏

13
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部