简介

  1. 在计算机中采用4位二进制码对每个十进制数位进行编码。
  2. 4位二进制码有16中不同的组合,从中选出10种来表示十进制数位的0~9,有多种方案可供选择,下面介绍最常用的几种。

1 有权码

  1. 表示一位十进制数的二进制码的每一位有确定的权。
  2. 一般用8421码,其4个二进制码的权从高到低分别为8、4、2 和 1.
  3. 用0000、0001、···、1001 分别表示0、1、···、9,每个数位内部满足二进制规则,而数位之间满足十进制规则,故称这种编码为“以二进制编码的十进制码”(binary coded decimal,BCD).
十进制 二进制
0 0000
7 0111
12 0001 0010
13 0001 0011
127 0001 0010 0111
234 0010 0011 0100

1.1 BCD码加法运算修正规则:

  1. 如果两个一位BCD码相加之和小于或等于(1001)2,即(9)10,不需要修正;

  2. 如果相加之和大于或等于(10)10,要进行加6修正,并向高位进位,进位可以在首次相加或修正时产生。

      1 + 8 = 9                         4 + 9 = 13                                    9 + 7 = 160   0   0   1                       0   1   0   0                               1   0   0   1
    +  1   0   0   0                   +  1   0   0   1                       +      0   1   1   1
    —————————————————                   —————————————————                       —————————————————————1  0   0   1                       1   1   0   1                           1   0   0   0   0
    不需要修正                           +  0   1   1   0   修正              +      0   1   1   0   修正—————————————————————                     —————————————————————1  0   0   1   1                           1   0   1   1   0
    

1.2 BCD码加6修正的由来

十进制 二进制 BCD码 二进制差值
10 1010 1 0000 0110
11 1011 1 0001 0110
12 1100 1 0010 0110
13 1101 1 0011 0110
14 1110 1 0100 0110
15 1111 1 0101 0110
16 1 0000 1 0110 0110
17 1 0001 1 0111 0110
18 1 0010 1 1000 0110
19 1 0011 1 1001 0110

说明:两个十进制一位数相加的结果小于或等于19,在[10, 19]范围内,每一个十进制数的BCD码都比二进制码小了6,换算成二进制码,也就是0110.

2 无权码

表示一个十进制数位的二进制码的每一位没有确定的权。使用较多的是余3码(Excess-3 Code)和格雷码(Gray Code),格雷码又称“循环码”。

十进制 余3码 格雷码(1) 格雷码(2)
0 0011 0000 0000
1 0100 0001 0100
2 0101 0011 0110
3 0110 0010 0010
4 0111 0110 1010
5 1000 1110 1011
6 1001 1010 0011
7 1010 1000 0001
8 1011 1100 1001
9 1100 0100 1000

2.1 余3码

在8421码的基础上,把每个编码都加上0011而形成的,如上表所示。

2.1.1 加法规则

  1. 当两个余3码相加不产生进位时,应从结果中减去0011;

  2. 产生进位时,应将进位信号送入高位,本位加0011。

      (28)~10~ + (55)~10~ = (83)~10~0   1   0   1                   1   0   1   1           (28)~10~+) 1   0   0   0           ~1~     1   0   0   0           (55)~10~————————————————————————————————————————————————                低位向高位产生进位,高位不产生进位。1  1   1   0                   0   0   1   1-) 0   0   1   1               +) 0   0   1   1————————————————————————————————————————————————               低位+3,高位-3。(0011)~2~ = (3)~10~1 0   1   1                   0   1   1   0
    

二进制的(1010)2需要借助(0110)2才能完成BCD码的进位,造成相加结果少了6,也就是加数和被加数都少了3,所以相加结果需要加3得到余3码。

2.2 格雷码

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。
若不作特别说明,格雷码就是指典型格雷码,它可从自然二进制码转换而来。

优点:从一个编码变到下一个相邻编码时,只有1位发生变化。

特点:

  1. 格雷码属于可靠性编码,是一种错误最小化的编码方式。因为,虽然自然二进制码可以直接由数/模转换器转换成模拟信号,但在某些情况,例如从十进制的3转换为4时二进制码的每一位都要变,能使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它在相邻位间转换时,只有一位产生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。由于这种编码相邻的两个码组之间只有一位不同,因而在用于方向的转角位移量-数字量的转换中,当方向的转角位移量发生微小变化(而可能引起数字量发生变化时,格雷码仅改变一位,这样与其它编码同时改变两位或多位的情况相比更为可靠,即可减少出错的可能性;
  2. 格雷码是一种绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便;
  3. 由于格雷码是一种变权码,每一位码没有固定的大小,很难直接进行比较大小和算术运算,也不能直接转换成液位信号,要经过一次码变换,变成自然二进制码,再由上位机读取;
  4. 典型格雷码是一种采用绝对编码方式的准权码,其权的绝对值为2i-1(设最低位i=1);
  5. 格雷码的十进制数奇偶性与其码字中1的个数的奇偶性相同。

2.2.1 格雷码编码方法

2.2.1.1 递归生成码表

这种方法基于格雷码是反射码的事实,利用递归的如下规则来构造:

  1. 1位格雷码有两个码字;
  2. (n+1)位格雷码中的前2n个码字等于n位格雷码的码字,按顺序书写,加前缀0;
  3. (n+1)位格雷码中的后2n个码字等于n位格雷码的码字,按逆序书写,加前缀1;
  4. n+1位格雷码的集合 = n位格雷码集合(顺序)加前缀0 + n位格雷码集合(逆序)加前缀1。
1位格雷码 2位格雷码 3位格雷码 4位格雷码
0 00 000 0000
1 01 001 0001
11 011 0011
10 010 0010
110 0110
111 0111
101 0101
100 0100
1100
1101
1111
1110
1010
1011
1001
1000

2.2.1.2 异或转换

将二进制码从右向左依次编号为0,1,2,···,n-1。
二进制码–>格雷码:

G~i~ = B~i~ xor B~i+1~,i = 0,···,n-1,令B~n~ = 0

格雷码–>二进制码

G~i~ = B~i~ xor B~i+1~,i = n-1,···,0,令B~n~ = 0

2.2.1.3 卡诺图

  1. 将卡诺图变量分为两组,变量数目相近(最好相等)
  2. 以逻辑变量高位在左低位在右建立卡诺图
  3. 从卡诺图的左上角以之字形到右上角最后到左下角遍历卡诺图,依次经过格子的变量取值即为典型格雷码的顺序

三位格雷码(建立在二位格雷码基础上)

AB\C 0 1
00 000 --> 001
01 010 <-- 011
11 110 --> 111
10 100 <-- 101

四位格雷码(建立在三位格雷码基础上)

AB\CD 00 01 11 10
00 0000 --> 0001 --> 0011 --> 0010
01 0100 <-- 0101 <-- 0111 <-- 0110
11 1100 --> 1101 --> 1111 --> 1110
10 1000 <-- 1001 <-- 1011 <-- 1010

2.2.1.4 使用异或乘除

用异或代替加减进行二进制竖式乘除,称为异或乘除,它的特点是无进退位。
如:10101除以11将变成1100余1。
二进制转格雷码:
只要异或乘以二分之三,即二进制的1.1,然后忽略小数部分;也可以理解成异或乘以三(即11),再右移一位。
格雷码转二进制:
异或乘以三分之二,即除以1.1,忽略余数;或者左移一位,再异或除以三,忽略余数。

十进制数的编码与运算相关推荐

  1. 【python】关于十进制数取异或运算原理

    案例一 a=10 b=15 c=a^b d=bin(c).count("1") print(c) print(d) 运行结果为:c=5,d=2,这是怎么计算的呢?首先,a=10,转 ...

  2. 计算机字符串 对应10进制数,计算机系统基础(五)十进制数的表示

    http://kaito-kidd.com/2018/08/14/decimal-expression/ 我们知道计算机中数字都是使用的二进制表示和运算,对于我们熟悉的十进制数字,可以通过数值进制公式 ...

  3. 51单片机实现三位十进制数加减乘除运算

    51单片机实现三位十进制数加减乘除运算 一.题目 51单片机IO接口作业 请将附件给出的Proteus图用51单片机完成一个计算器功能. 1.显示采用动态分时8位共阳数码管输出. 2.采用4*4矩阵键 ...

  4. 2021数字电路课程设计 一位十进制数加减法运算电路

    设计任务: 用集成芯片设计一位十进制数加减法运算电路,具体要求如下: (1)能实现一位十进制数的加法运算,最大值为9+9=18. (2)能实现一位十进制数的减法运算,最小值为0-9=-9. (3)能显 ...

  5. c语言中十六进制可以直接和十进制运算吗,十进制与十六进制怎么理解?,C语言中十进制数和十六进制数能直接运算吗...

    16进制 10进制 00 0 01 1 02 2 .. . 09 9 0A 10 0B 11 0C 12 0D 13 0E 14 0F 15 10 16 1F 31 20 32 将数字符号按序排列成数 ...

  6. 计算机二进制基础列式,计算机基础;十进制数100对应的二进制数、八进制数和十六进制数分别是...

    中计数采用了多种记数制,比如:十进制,六十进制(六十秒为一分,六十分为一小时,即基数为60,运算规则是逢六十进一),--.在计算机中常用到十进制数.二进制数.八进制数.十六进制数等,下面就这几种在计算 ...

  7. 计算机中有关数及编码的知识,计算机中有关数及编码的知识

    计算机中有关数及编码的知识 1.计算机是智能化的电器设备 计算机就其本身来说是一个电器设备,为了能够快速存储.处理.传递信息,其内部采用了 大量的电子元件,在这些电子元件中,电路的通和断.电压高低,这 ...

  8. 计算机十进制数中码数有几个,计算机中的数和码

    <计算机中的数和码>由会员分享,可在线阅读,更多相关<计算机中的数和码(27页珍藏版)>请在人人文库网上搜索. 1.第第1章章 计算机中的数和码计算机中的数和码 微机系统原理及 ...

  9. 计算机有关的基础知识,计算机基础知识之计算机中有关数及编码的知识

    1.4 计算机中有关数及编码的知识 1.计算机是智能化的电器设备 计算机就其本身来说是一个电器设备,为了能够快速存储.处理.传递信息,其内部采用了大量的电子元件,在这些电子元件中,电路的通和断.电压高 ...

最新文章

  1. 链表问题9——复制含有随机指针节点的链表(初阶)
  2. 新到DELL M1000e 刀片服务器
  3. 谈一谈HTTP中Get与Post的区别与主要应用场景
  4. mysql connector开源协议_Spring Boot 集成 MariaDB Connector/J 连接 MySQL
  5. 成功在家用ssh远程连上了学校电脑虚拟机当中的ubuntu(代价是虚拟机全部黑屏只能用SSH连接了!)
  6. 【原创】ASP.NET C# 对SQL/ACCESS 数据库的备份和还原函数
  7. 第0课【课前准备】Keil安装 ISP程序下载
  8. 网络编程(三)sqlist轻量级数据库的简单应用
  9. C++之STL-vector-string-list-deque-queue-map-文件操作
  10. python word 表格最大列数_Excel表格中的行数和列数的最大是多少?
  11. 使用cmd命令查看WiFi密码
  12. 《Learning for Disparity Estimation through Feature Constancy》
  13. springboot读取xml配置文件
  14. 32 任意项级数敛散性的判别法
  15. vue里面动态渲染图片?
  16. 免费语音转文字的软件有哪些?快来看看这几个软件
  17. 阿里云之如何使用阿里大鱼给喜欢的人发短信(1)
  18. iOS App完整项目
  19. 图片无损压缩(ubuntu 安装 )
  20. Imagenet 完整数据集下载

热门文章

  1. 什么是Web3D?Web3D技术发展历程以及Web3D应用场景
  2. android gps源码分析,Android编程之Android GPS ——AGPS源码分析及配置
  3. 备战Noip2018模拟赛11(B组)T4 Path 好路线
  4. ​魔术APP开发软件为魔术爱好者展示更神奇的魔术表演​
  5. 计算机高手是怎么炼成的
  6. W5500 图片嵌入STM32 FLASH笔记(备忘)
  7. 浅谈Python爬虫(五)【网易云热评爬取实例】
  8. dhl:AjaxPro的使用后感
  9. Openjudge:矩阵乘法
  10. setLayout()和GridData的设置