FPGA学习笔记(二)__二进制编码

二进制编码


1.BCD码 — 在计算机表示十进制数据

  由于十进制共有0-9是个数码,因此为了能够全面的表述他们,必须使用至少4位二进制数码来表示1位十进制码。4位二进制数共有0000~1111,共16种编码形式,可以从中任选10个来分别代表十进制数中的10个数码,因此方法有很多多种。

有权BCD码

  有权BCD码是指表示十进制数码的4位二进制编码中,每一位二进制编码都有一定的权值,如8421码、2421码:

十进制8421码2421码
000000000
100010001
200100010
300110011
401000100
501011011
601101100
701111101
810001110
910011111

(1)8421码

  8421码是最常用的有权BCD码,在这种编码方式中,每一位二值代码的“1”都代表一个固定数值。将每位“1”所代表的二进制数加起来就可以得到它所代表的十进制数字。因为代码中从左至右看每一位“1”分别代表数字“8”“4”“2”“1”,故得名8421码。
如:
[ 1001 ] 8421 B C D = 1 ∗ 8 + 0 ∗ 4 + 0 ∗ 2 + 1 ∗ 1 = 9 {[1001]_{8421BCD}} = 1*8 + 0*4 + 0*2 + 1*1 = 9 [1001]8421BCD=18+04+02+11=9

(2)2421码

  2421码它也是一种有权码,权值从高到底为2、4、2、1。特点是大于等于5的4位二进制数中最高位为1,小于5的最高为为0;2421中,0和9、1和8、2和7、3和6、4和5、互为反码,这种特性被称为自然互补性。
如:
[ 1111 ] 2421 = 1 ∗ 2 + 1 ∗ 4 + 1 ∗ 2 + 1 ∗ 1 = 9 {[1111]_{2421}} = 1*2 + 1*4 + 1*2 + 1*1 = 9 [1111]2421=12+14+12+11=9

无权码

  无权BCD码中,每一位二进制编码都没有固定的权值,因此不能通过按位展开乘权相加的方法来得出它们所代表的十进制数。由于它们不受权值的限制,因此它们的形式更加灵活,并且有着各自比较独特的优点。

十进制8421码余三码
000000011
100010100
200100101
300110110
401000111
501011000
601101001
701111010
810001011
910011100

余三码

  余三码是在821码的基础上,对以每个码字加3得到的,它的特点:当十进制的和为9时,相应二进制编码和正好是15,于是可自动产生进位信号,而不需要修正,不过求和后的值需要修正。
如:
[ 0100 ] 余 三 码 = 1 [ 1011 ] 余 三 码 = 8 {} {[0100]_{余三码}} = 1\\ {[1011]_{余三码}} = 8 [0100]=1[1011]=8
十进制1+8=9(相加为十进制的9)
二进制0100+1011=1111(相加为十进制的15)

格雷码

  在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同 ,则称这种编码为格雷码:

十进制8421码格雷码
000000000
100010001
200100011
300110010
401000110
501010111
601100101
701110100
810001100
910011101

  格雷码属于可靠性编码,是一种错误最小化的编码方式,例如从十进制的3(0011)转换为4(0100)时二进制码的每一位都要变,能使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它在相邻位间转换时,只有一位产生变化,比如3变4(0010->0110)只有一位产生变化,这在通信传输中非常有用。它大大地减少了由一个状态到下一个状态时逻辑的混淆。

二进制求其格雷码:二进制数0101,要求它对应的格雷码,先将0101>>1 , 得到 0010,然后(0101)^(0010) =0111就得到其对应的格雷码。

2.ASCII码—在计算机中表示字符

  在计算机中,所有的数据存储和运算时都要使用二进制表示,那像“a”,“A”,“b”,“B”,“c”,“C”这样的字符在计算机中存储时也要使用二进制数来表示。具体怎么表示,就出现了一套约定俗成的编码方式——ASCII码。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。
在这里插入图片描述

3.补码 —在计算机中表示负数

负数为什么要用补码来表示呢?
  在计算机中只有加法器,没有减法器,因此减法是通过加法器来计算的,比如3-3是通过3+(-3)这样计算的:

//3的原码
0000_0011
//3的补码(即-3在计算机中的表示形式)
1111_1101

//则3+(-3)
 0000_0011
+1111_1101
----------
10000_0000
//取低八位(0000_0000)就为0

所以在计算机中负数要用补码来表示,这样才能被计算机识别并用于计算等。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字硬鉴

你的鼓励就是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值