数制与编码--数码和字符的代码表示

1.十进制数的二进制编码

1.1 8421 BCD码

简称8421码,按4位二进制数的自然顺序,取前10个数依次表示十进制的0-9,后6个数不允许出现,若出现则认为是非法的或错误的。8421码是一种有权码,每位有固定的权,从高到低依次为8,4,2,1,如:8421码0111=0×8+1×4+1×2+1×1=7

8421码的特点:
(1)与四位二进制数的表示完全一样
(2)1010-1111为冗余码
(3)8421码与十进制码的转换关系为直接转换关系,例:00010011.011001008421BCD=13.6410
(4)运算时按逢10进1的原则,并且要进行调整。调整原则:有进位或出现冗余码时,加法+6调整,减法-6调整

1.2 余三码

余三码由8421码加3形成。特点:
(1)是一种无权码
(2)有6个冗余码(0000、0001、0010、1101、1110、1111)
(3)对9的自补码。例如:4=0111,5=1000,01119=1000,即0111按位取反
(4)如果两个余3码相加没有进位,则和数要减3,否则和数要加3

1.3 2421 BCD码

简称2421码。按4位二进制数的自然顺序,取前8个数依次表示十进制的0~7,8和9分别为1110和1111。其余6个数不允许出现,若出现则认为是非法的或错误的。这只是2421码的一种编码方案。 2421码是一种有权码,每位有固定的权,从高到低依次为2,4,2,1,如:
2421码0111=0×2+1×4+1×2+1×1=7
2421码1110=1×2+1×4+1×2+0×1=8

1.4 几种常见的十进制代码

2.可靠性编码

能减少错误,发现错误,甚至纠正错误的编码称为可靠性编码。

2.1 格雷码

在一组数的编码中,如果任意相邻的代码只有一位二进制数不同,即为格雷码。
典型二进制格雷码编码规则:
{Gn1=Bn1Gi=BiBi+1
例如13的格雷码:
1 1 0 1



1 0 1 1
典型二进制格雷码转换成二进制数的方法:
{Bn1=Gn1Bi=Bi+1Gi
例如7的典型格雷码为0100
0 1 0 0



0 1 1 1
格雷码与二进制代码的比较

2.2 奇偶校验码

由信息位和校验位(冗余部分)两部分组成。校验位的取值可使整个校验码中的1的个数按事先的规完成为奇数或偶数。奇偶校验码可发现奇数位错误,但是不能知道是哪一位出错,不能发现偶数位错误。

2.3 海明码

可以检验一位错误并且可以定位的可靠性编码。
结构:信息位(4位)+校验位(3位) (以BCD码为例)
组织:I4 I3 I2 P3 I1 P2 P1
校验规则:{P3=I4I3I2P2=I4I3I1P1=I4I2I1
例:求0100的海明码
P3=1,P2=1,P1=0,组织为0101(P3)01(P2)0(P1)
海明码校验和:{S2=I4I3I2P3S1=I4I3I1P2S0=I4I2I1P1
Si=0无错,Si=1出错。(i=0,1,2)
海明码错误定位:S2S1S0为000说明无错,S2S1S0为111至001表明一位出错位置。
例:0 0 0 1 1 1 0
  I4I3I2P3I1P2P1
易得S2=1S1=0S0=1,说明第五位出错,即I2出错
海明码信息位与校验位的关系: 2kk+n+1,其中2k表示海明码位数+1,k为校验位位数,n为信息位位数。

 

 

 


__EOF__

本文作者神楽桜KaguraSakura
本文链接https://www.cnblogs.com/KaguraSakura/p/16615129.html
关于博主:hello~好久不见,喜欢的话点个赞吧
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   神楽桜KaguraSakura  阅读(1031)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示