171221—8421BCD码、进制转换

来源:互联网 发布:case when mysql 编辑:程序博客网 时间:2024/06/05 16:45

8421BCD码

人性化的存在

计算机内毫无例外地都使用二进制数进行运算,但通常采用8进制和十六进制的形式读写。对于计算机技术专业人员,要理解这些数的含义是没问题,但对非专业人员却不那么容易的。由于日常生活中,人们最熟悉的数制是十进制,因此专门规定了一种二进制的十进制码称为BCD码(Binarycoded Decimal),它是一种以二进制表示的十进制数码。
8421BCD为最常用的一种BCD码
表示方法:
以一个4位二进制数表示十进制中一个一位数,而后用四个四个的组合表示多位十进制数。

“8421”即:四位二进制数的权重各为8421。

【百度百科】二进制编码的十进制数,简称BCD码(Binarycoded Decimal)。这种方法是用4位二进制码的组合代表十进制数的0123456789 十个数符。4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0123456789 这十个数符。最常用的BCD码称为8421BCD码,8.4.2.1 分别是4位二进数的位取值。 下图为十进制数和8421BCD编码的对应关系表:

这里写图片描述

进制转换

不同进制->十进制:

整数&小数部分:

将各位数字乘上其所在位的权重,按权展开相加

十进制是权是10;二进制是权是2;十六进制是权是16;八进制是权是8;
例:
110011(二进制数)=1*2^5+1*2^4+0*2^3+0*2^2+1*2^1+1*2^0=32+16+2+1=51
1507(八进制数)=1*8^3 + 5*8^2 + 0*8^1 + 7*8^0 = 839
2AF5(十六进制数)=2*16^3 + A*16^2+ F*16^1 + 5*16^0 = 10997

十进制->不同进制:

整数部分:除权(倒序)取余

以二进制为例:
十进制数13转化成二进制数
13/2=6 余1
6/2=3 余0
3/2=1 余1
1/2=0 余1
结果:1101
这里写图片描述

小数部分:乘权取整

这一操作可以无限进行下去,会得到一个无限循环小数。在实际应用中应要求精度。

以下搬自百度知道:

0.25 二进制得0.01
0.25*2=0.5 取0 0.5*2=1取1 所以是0.01
这是为什么呢,看分数比较容易看出原因
十进制0.25 从十进制方式看,也就是 分数2/10 + 分数5/100
先看十进制

乘10(得2.5)的整数位得2 ,也就是十进制的小数第一位(这里你看到的2,其实是十分之二)

除去整数位,再乘10(得5), 就是小数位第二位(这里你看到的5其实是一百分之五)

十进制0.25 从二进制方式看,也就是 分数0/2 + 分数1/4

再看

乘2(得0.5)的整数位得0 , 也就是二进制的小数第一位(这里你看到的0,其实是二分之零)

除去整数位,再乘2(得1), 就是小数位第二位(这里你看到的1其实是四分之一)

再看

0.25,等于 0/2 + 1/4,即得二进制0.01。

0.75,等于 1/2 + 1/4,即得二进制0.11。

这种方法其实正如十进制7,等于4+2+1,即得二进制111一样。
其实乘二取整,意义就在于,每次乘2,在整数位看到的都是 2的n次方分之一的分子的值,即二进制小数点后第n位的值。
(引:https://zhidao.baidu.com/question/289714830.html)

二进制&二进制的家人们

二进制数->八进制数:分组

从小数点开始,整数部分向左、小数部分向右,每3位为一组不,足3位的要用“0”补足3位。
用一位八进制数的数字表示就得到一个八进制数。

例:
将二进制的10110.0011 转换成八进制:
分组:
010 110 . 001 100
26 . 14
即:(10110.011)2 = (26.14)8

八进制数->二进制数:直接

把每一个八进制数转换成3位的二进制数,就得到一个二进制数。

例:将八进制的37.416转换成二进制数:
3 7 . 4 1 6
011 111 .100 001 110
即:
(37.416)8 =(11111.10000111)2

二进制->十六进制 :分组

二进制数转换为十六进制数的方法也类似,从右到左,四位一组,不够补0
例:
0101 1011 1011
结果为:5BB

十六进制数->二进制数:

把每一个十六进制数转换成4位*(体现了一致性)*的二进制数,就得到一个二进制数。
例:
将二进制数1100001.111 转换成十六进制:
0110 0001 . 1110
6 1 . E
即:
(1100001.111)2 =(61.E)16

附,还算能用的进制转换工具,百度即得:
http://tool.oschina.net/hexconvert

原创粉丝点击