文章目录
1、二进制编码的相关知识
①、为什么采用二进制编码
计算机内部处理的所有数据都必须是“数字化编码”了的数据。而计算机要获得数据进行进一步的加工处理,就需要输入设备来将现实世界中的感觉媒体信息转化成二进制的编码表示。因此输入设备必须具有“离散化”和“编码”两方面的功能。
在计算机内部,所有信息都是用二进制编码的。为什么呢?
- 二进制只有两种基本状态,使用有两个稳定状态的物理器件就可以表示二进制数的每一位,这相对来说是比较容易实现的。比如高低两个电位,脉冲的有无,脉冲的正负极。
- 二进制编码、计数、运算规则简单
- 两个符号1、0可以对应逻辑命题中的真假,为计算机中的逻辑运算和程序中的逻辑判断提供了良好的条件
②、数据的介绍
计算机内二进制可以表示的类型一般有两种,指令和数据。指令用于识别、处理数据,但指令和数据本质上都是一串二进制序列。
其中,数据的类型分为数值数据和非数值数据。数值数据可比较大小,分为整数(定点数)和实数(浮点数),而定点数有分为无符号整数和带符号整数两种。所以数值数据一共有四小类,这四类数据编码方式还是不同的。
而非数值数据是一个没有大小之分的位串,主要用于表示字符数据和逻辑数据
在计算机内部,数值数据的表示方法共有两大类,一种是直接用二进制表示,一种是采用二进制编码的十进制数(BCD)表示。
表示一个数值数据需要确定三个要素
- 进位计数值(采用二进制?八进制?十六进制?)
- 定浮点表示(数据类型是什么样的?定点整数还是浮点数?有没有小数点?)
- 如何使用二进制编码(编码的类型是什么样的,使用原码?反码?补码?移码?)
2、二进制、八进制、十进制、十六进制的表示方法
为了方便理解,先从十进制开始介绍
①、十进制
十进制可以说是我们最熟悉的表示方法了,先写一个十进制数 2345.67
可以看到
2345.67=2×103+3×102+4×101+5×100+6×10-1+7×10-2
我们称10为基数(base),10i为第i位上的权,其中每一位可以用的数字为0-9
十进制用字母表示为D,D写在十进制数的末尾,也可以不加D(2345.67D或2345.67)。将十进制数用括号括起来,在右下角写一个10的角标,同样也可以表示这个数为十进制数
②、二进制、八进制、十六进制
二进制、八进制和十六进制与十进制类似
首先R进制字面意思为逢R进一,故二进制、八进制和十六进制每一位数的范围分别为0-1、0-7、0-15(F),(范围为0至N-1,到了N就往上进1了)
二进制字母表示为B,八进制为O,十六进制为H,或在开头加0x
例如101101B为二进制数,数值为101101,0x254FE为十六进制数,数值为254FE
二进制、八进制和十六进制的基分别为2,8,16。权和十进制是一样的,以小数点为起点,左侧为正方向,将这串数字看做一个离散的数轴,则正方向上第n位对应的权为n-1,(也可以将个位看做原点,那么第n位对应的权就是n了)
例如
1101.01B=1×23+1×22+0×21+1×20+0×2-1+1×2-2
注意,如果按大众习惯在日常书写中都采用十进制的话,等号右侧的数值是相对十进制写的,可以这样理解,我们所说的基和权,本质上是R进制之间的一个转换关系,只不过我们大多数情况下为了方便统计数值大小,默认将这个数转化成十进制了
3、二进制、八进制、十进制、十六进制的相互转换
①、R进制数和十进制数的相互转换
首先,R进制数转化成十进制,只需要按权展开即可,只需注意不同的进制对应的基数不同,但相同位数下权是一样的
另外还需清楚某些字母代表的数字,这里针对的是十六进制的A-F,建议在考试时先将A-F对应的数字写到一边方便查找
例如
0xF785=15×163+7×162+8×161+5×160=63365D
②、十进制数转化成R进制数
这是比较重要的地方,转换的思路为:
1、先将十进制数转换成二进制数
2、再将二进制数转换成八进制或十六进制
两步转换的原因是,十进制直接转换成八进制或十六进制比较困难,这里涉及到凑八进制或十六进制倍数的问题,如果是一个很特殊或者很简单的十进制数字,那么可以直接转化成八进制或十六进制数
例如
16=0x10
24=30O(38)
240=0xF0(1516)
但是这样的数字毕竟是少数,真正想转换十分困难,我们都能一眼看出15=0xF,但是能一眼看出3840=0xF00的估计就没有几个了
所以为解决这个问题,我们可以将十进制数转换成二进制数,再凭借八进制、十六进制的对应关系直接写出八进制、十六进制相关数值
1、十进制转换成二进制
整数部分使用短除法,如下图
注意这是整数时的情况,顺序是从下往上,如果出现十进制小数转换成二进制小数,顺序就是从上往下,方法是不断乘二取整数部分
如下图
这样就完成了十进制到二进制的转换,即
15.875=1111.111B
2、二进制转换成八进制或十六进制
由于8、16分别是2的三次方和四次方,那么一位八进制数相当于三位二进制数,一位十六进制数相当于四位二进制数,只需会推两个表格即可
总结来看,以二进制为媒介,十进制先转化成二进制,再转化成八进制/十六进制,方便快捷