格雷码(GRAY)
来源:互联网 发布:java上传压缩包并解压 编辑:程序博客网 时间:2024/06/03 12:48
(英文:Gray Code, 又称作葛莱码,二进制循环码)是1880年法国工程师Jean-Maurice-Emlle Baudot曾用过的一种编码,因Frank Gray申请专利而得名。它是一种绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,虽然自然二进制码可以直接由数/模转换器转换成模拟信号,但在某些情况,例如从十进制的3转换为4时二进制码的每一位都要变,能使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它在相邻位间转换时,只有一位产生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。由于这种编码相邻的两个码组之间只有一位不同,因而在用于风向的转角位移量-数字量的转换中,当风向的转角位移量发生微小变化(而可能引起数字量发生变化时,格雷码仅改变一位,这样与其它编码同时改变两位或多位的情况相比更为可靠,即可减少出错的可能性。
但格雷码是一种变权码,每一位码没有固定的大小,很难直接进行比较大小和算术运算,也不能直接转换成液位信号,要经过一次码变换,变成自然二进制码,再由上位机读取。解码的方法是用‘0’和采集来的4位格雷码的最高位(第4位)异或,结果保留到4位,再将异或的值和下一位(第3位)相异或,结果保留到3位,再将相异或的值和下一位(第2位)异或,结果保留到2位,依次异或,直到最低位,依次异或转换后的值(二进制数)就是格雷码转换后自然码的值.
一、格雷码解码的Pascal 程序:
var x,i,n:longint; begin readln(n); x:=n; for i:=1 to 31 do begin x:=x shr 1; n:=n xor x; end; writeln(n); end.二、格雷码转换快速方法
(假设以二进制为0的值做为格雷码的0) G:格雷码 B:二进位码 G(N) = B(n+1) XOR B(n)三、格雷码转二进位数
二进位码第n位 = 二进位码第(n+1)位+格雷码第n位。因为二进位码和格雷码皆有相同位数,所以二进位码可从最高位的左边位元取0,以进行计算。(注:遇到1+1时结果视为0) 例如: 格雷码0111,为4位数,所以其所转为之二进位码也必为4位数,因此可取转成之二进位码第五位为0,即0 b3 b2 b1 b0。 0+0=0,所以b3=0 0+1=1,所以b2=1 1+1取0,所以b1=0 0+1取1,所以b0=1 因此所转换为之二进位码为0101- 格雷码(GRAY)
- 【Gray格雷码】
- 格雷码 Gray
- Gray Counter (格雷码计数器)
- [LeetCode] 格雷码(Gray Code)
- Gray Code 格雷码 @LeetCode
- Gray Code 格雷码编码
- leetcode Gray Code 格雷码
- Gray Code 格雷码
- 格雷码(gray code)
- LeetCode-Gray Code(格雷码)
- Gray Code 格雷码
- leetcode89-Gray Code(格雷码)
- [lintcode] Gray Code,格雷码
- 格雷码Gray Code
- 格雷码(Gray Code)
- gray
- GRAY
- (java基础)java运算符
- 心存感激--Be thankful
- android使用socket使底层和framework通信
- 寻找网页设计灵感的27个最佳网站推荐
- Html5资源索引
- 格雷码(GRAY)
- C++产生随机数
- Twitter API中文文档
- 1342. 开心的金明
- Eclipse 中 Could not find *.apk的解决方案
- 报文(Message)实例—— TCP / IP 头结构
- 环境变量
- C++ Operators
- 2011年养成的一个工作习惯