「通信原理」格雷码的生成与破译

「通信原理」格雷码的生成与破译

格雷码,gray code,相邻两数之间只有一个bit发生了改变,因此相比于自然编码的二进制系统,格雷编码的更不容易出错。使用卡诺图化简布尔代数式的时候,也会用到格雷码。本文将介绍三种格雷码的生成与破译方法,即格雷码和自然编码的相互转换。格雷码的顺序不是唯一的。

1、直接排列

根据定义直接排列,适用于十分简单的情形。

十进制二进制(自然编码)格雷码
00000
10101
21011
31110

2、镜射法

n位的格雷码可以直接由n-1位的格雷码“镜面反射”之后,在前面添加0或者1直接得到。其过程如下图所示:

请添加图片描述

第二列的[0 1 1 0]即是1位格雷码“镜面反射”得到的,然后在前面添加[0 0 1 1]则得到2位的格雷码[00, 01, 11, 10]。同理可得3位的格雷码。

3、公式法:

(1)二进制数转格雷码

前面两种方法都是适用于位元数较小的二进制数,当n很大时(一张纸写不下的时候),就不适合列举出所有的对应关系,再去编解码了。

符号规定:G:格雷码,B:二进制码,k:正在计算的位

生成公式:G(k) = B(k+1) ⊕ B(k)或者G(k) = B(k+1) +B(k)

文字解释:第k位的格雷码🟰自然编码的第k位 异或 第k+1位。

注意:

  1. 异或:相异为1,相同为0;或称为模2加、二进制加法。
  2. n+1位:对于n位的自然编码,第n+1位为0。
  3. 从低位向高位运算。
举例:求6对应的格雷码。
6的自然二进制编码为110。格雷码也将有3bit,G(1) = B(2)+B(1)=1, G(2) = B(3)+B(2) = 0, G(3) = B(4)+B(3) = 1
则格雷编码为101。

(2)格雷码转二进制数

反过来:B(k) = G(k) - B(k+1) ,或者B(k) = G(k) + B(k+1) 、B(k) = G(k) ⊕ B(k+1)

注意:

  1. 模2减的运算规则和模2加一模一样。
  2. 从高位向低位运算。
举例:求101对应的自然编码。
格雷码为101,B(3) = G(3)+B(4)=1, B(2) = G(2)+B(3) = 1, B(1) = G(1)+B(2) = 0。
则自然编码为110。

4、线性变换法

(1)二进制数转格雷码

二进制码转换为格雷码,可以看成是一种线性变换T: V n ( B ) → V n ( B ) V_n(B)\to V_n(B) Vn(B)Vn(B)。(假设用B来表示0和1)

对于一个4bit的二进制空间,所有坐标为:{0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111}。基为(e1, e2, e3, e4)。e1 = [1,0,0,0]T,e2 = [0,1,0,0]T,e3 = [0,0,1,0]T,e4 = [0,0,0,1]T。任何一个二进制数B = (e1, e2, e3, e4)x。x是这个二进制数的坐标,是一个列向量。

对于一个4bit的格雷编码的空间。基为(g1, g2, g3, g4)。g1 = [1,1,0,0]T,g2 = [0,1,1,0]T,g3 = [0,0,1,1]T,g4 = [0,0,0,1]T

根据线性变换的规则,T(e1) = g1 = e1+e2, T(e2) = g2 = e2+e3, T(e3) = g3 = e3+e4, T(e4) = g4 = e4。

写成矩阵的形式:T(e1, e2, e3, e4) = (g1, g2, g3, g4) = (e1, e2, e3, e4)A

A = array([[1, 0, 0, 0],

​ [1, 1, 0, 0],

​ [0, 1, 1, 0],

​ [0, 0, 1, 1]])

所有的4bit格雷码,都可以通过A来生成。

举例:12的格雷码。
12的坐标为x=[1,1,0,0]T
Ax = [1,0,1,0]T
注意:这里是二进制乘法。

(2)格雷码转二进制数

反过来,只需要求出线性变换的逆矩阵,A-1即可。用A-1乘以格雷码向量,即可转换为相应的自然编码。

举例:[1,0,1,0]T的自然编码。
A- = array([[ 1.,  0.,  0.,  0.],[-1.,  1.,  0.,  0.],[ 1., -1.,  1.,  0.],[-1.,  1., -1.,  1.]])
注意这里是二进制乘法,因此-1应该写成1,2应该写成0
所以,A- =array([[ 1,  0,  0,  0],[ 1,  1, 0,  0],[ 1,  1, 1,  0],[ 1,  1, 1,  1]]) 
np.dot(A-,[1,0,1,0]) = array([1, 1, 2, 2]) = [1,1,0,0]T

总结:本文一共用了四种方法来构造格雷码,其中前三种都是在传统的通信专业课程里面会学习到,第四种是在研究生课程矩阵理论当中会学到(数学专业可能在本科就会学习到)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/122547.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php对接AWS S3云存储,上传S3及访问权限问题

首先先下载sdk包 https://docs.aws.amazon.com/zh_cn/sdk-for-php/v3/developer-guide/getting-started_installation.html S3创建存储桶 去安全凭证-》创建访问秘钥 创建的时候会提示,主账号创建不安全,这个时候我们需要创建一个IAM账号来创建秘钥 创…

密码学入门——环游密码世界

文章目录 参考书目一、基本概念1.1 本书主要角色1.2 加密与解密 二、对称密码与公钥密码2.1 密钥2.2 对称密码和公钥密码2.3 混合密码技术 三、其他密码技术 参考书目 图解密码技术 第三版 一、基本概念 1.1 本书主要角色 1.2 加密与解密 加密 解密 密码破译 二、对称密…

污水处理厂3D数字孪生三维可视系统降低设备风险隐患

当相对传统与保守的水务行业,与激进与开放的互联网发生碰撞之后,产生了最好的一个名词是:“智慧水务”,谈及智慧水务,自然免不了当下最具热度的技术“元宇宙”,水资源再生是我国追求高质量发展的新策略&…

基于Pytest+Allure+Excel的接口自动化测试框架

1. Allure 简介 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具,它不仅以 Web 的方式展示了简介的测试结果,而且允许参与开发过程的每个人可以从日常执行的测试中,最大限度地提取有用信息。 Allure 是由 Java 语言开发…

C++ 模板

模板: 模板,即数据是灵魂,其余为肉身,正所谓有趣的灵魂万里挑一,所以想要模板变得完美,关键在于数据;其余不过是抄作业的框架。 模板函数: 模板函数可以自动推导出你传给他的数据类型…

1.初识爬虫

爬虫是批量模拟网络请求的程序,想百度谷歌这种搜索类网站本质上就是爬虫 使用爬虫的时候不应该对别人的网站有严重的影响,比如你爬的频率太高了,让人家的网站崩溃了。不应该爬取网页上显示不到的内容,比如有一个直播的网站&#…

算法通关村第十九关——最小路径和

LeetCode64. 给定一个包含非负整数的 m n 网格 grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 输入:grid[[1,3,1],[1,5,1],[4,2,1]] 输出:7 解释:因为路径1→3→1→1→1的总和最小。 public int minPath…

16字节协议的串口通信

1.协议要求 协议为帧传输,一共16字节。主要是2字节的固定帧头 EB 90,2字节的帧计数(用来计数发出的帧),10字节的数据和2字节的校验位 帧头:2字节,固定值 8’HEB、8’H90 帧计数:2字节,用来说明发出去帧是…

【python爬虫】13.吃什么不会胖(爬虫实操练习)

文章目录 前言项目实操明确目标分析过程代码实现 前言 吃什么不会胖——这是我前段时间在健身时比较关注的话题。 相信很多人,哪怕不健身,也会和我一样注重饮食的健康,在乎自己每天摄入的食物热量。 不过,生活中应该很少有人会…

C语言入门 Day_14 for循环

目录​​​​​​​ 1.for循环 2.循环执行顺序 3.易错点 4.思维导图 前言 我们定义了一个数组以后,要使用(读取或者修改)数组元素的话,可以一个一个的读取,就前两课学的那样,代码类似这个结构。 int …

Centos7 + Apache Ranger 2.4.0 部署

一、Ranger简介 Apache Ranger提供一个集中式安全管理框架, 并解决授权和审计。它可以对Hadoop生态的组件如HDFS、Yarn、Hive、Hbase等进行细粒度的数据访问控制。通过操作Ranger控制台,管理员可以轻松的通过配置策略来控制用户访问权限。 1、组件列表 # Service Name Liste…

镜像的基本命令(docker)

文章目录 前言一、docker命令介绍1、帮助命令2、显示镜像3、搜索镜像4、下载镜像5、删除镜像 总结 前言 本文主要介绍docker中与镜像相关的一些命令,是对狂神课程的一些总结,作为一个手册帮助博主和使用docker的同学们来查找和回忆。 实验环境&#xf…

C标准输入与标准输出——stdin,stdout

🔗 《C语言趣味教程》👈 猛戳订阅!!! ​—— 热门专栏《维生素C语言》的重制版 —— 💭 写在前面:这是一套 C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅&#…

植物大战僵尸植物表(二)

前言 此文章为“植物大战僵尸”专栏中的第007刊(2023年9月第六刊)。 提示: 1.用于无名版; 2.用于1代; 3.pvz指植物大战僵尸(Plants VS Zonbies)。 植物大战僵尸植物表 土豆雷窝瓜火炬树桩火爆辣椒杨…

原来Linux这么牛:称霸全球超级电脑 500 强!

还记得之前《全球超级电脑 500 强,中国拿走冠亚军》新闻?虽然昔日超级电脑强权的美国在超级计算机竞赛中落后,但不管哪国打造的超级电脑,还有一件事情值得留意喔──几乎全部都是执行以 Linux 为基础的操作系统(注&…

华为云云服务器评测|云耀云服务器实例基础使用实践

🦖我是Sam9029,一个前端 Sam9029的CSDN博客主页:Sam9029的博客_CSDN博客-JS学习,CSS学习,Vue-2领域博主 **🐱‍🐉🐱‍🐉恭喜你,若此文你认为写的不错,不要吝啬你的赞扬,求…

【深入解析spring cloud gateway】02 网关路由断言

一、断言(Predicate)的意义 断言是路由配置的一部分,当断言条件满足,即执行Filter的逻辑,如下例所示 spring:cloud:gateway:routes:- id: add_request_header_routeuri: https://example.orgpredicates:- Path/red/{segment}filters:- AddR…

回归拟合 | 灰狼算法优化核极限学习机(GWO-KELM)MATLAB实现

这周有粉丝私信想让我出一期GWO-KELM的文章,因此乘着今天休息就更新了(希望不算晚) 作者在前面的文章中介绍了ELM和KELM的原理及其实现,ELM具有训练速度快、复杂度低、克服了传统梯度算法的局部极小、过拟合和学习率的选择不合适等优点,而KEL…

Go语言最全面试题,拿offer全靠它,附带免积分下载pdf

面试题文档下链接点击这里免积分下载 go语言入门到精通点击这里免积分下载 文章目录 Go 基础类GO 语言当中 NEW 和 MAKE 有什么区别吗?PRINTF(),SPRINTF(),FPRINTF() 都是格式化输出,有什么不同?GO 语言当中数组和切片的区别是什么&#xf…

自学Python01-创建文件写入内容

此处省去安装和前言,需要两个东西 一个去下载安装python官方库 Welcome to Python.org 一个是编译器pycharm PyCharm 安装教程(Windows) | 菜鸟教程 PyCharm: the Python IDE for Professional Developers by JetBrains 第一节 练习print…