春节假期结束后第一个工作日,开始备考中级软件工程师。
希望在今年5月底的软考中取得中级证书
视频地址:https://www.bilibili.com/video/BV1Qc411G7fB
从下图中可以看出,计算机中包含了一下三个层次
最终构成了信息化世界。
我们知道,任何数据在计算机中都是以二进制的形式表示的。因此我们需要了解不同进制之间是如何进行转换的。首先来看十进制:
实际上,根据十进制的规律,我们可以推广到任何其他的进制,下面是将任意进制转换到十进制的公式:
⚠️⚠️ 这里需要重点注意到是小数部分到进制转换是如何处理的。
下面是一些其他的例子:
记住比较常用的2的几次方幂的结果,会极大的提高我们在进制转换时的效率
除了将任意进制转换为十进制意外,还有一些其他常用的进制转换。蔽日下面的二进制转换到八进制和十六进制:
二进制转换为八进制:
- 以小数点为中心向两边进行扩充,每三位一组,不满三位的补0。得到的结果就是对应的八进制的数字
同理,二进制转换为十六进制:
- 以小数点为中心向两边进行扩充,每四位一组,不满四位的补0。得到的结果就是对应的十六进制的数字
这个概念相对陌生,实际上非常好理解
此外,还有一个概念是定点数和浮点数
首先来看原码,原码分为两部分:
以8位机器码为例,原码的取值范围是:
因此原码的取值范围为[-127,127]
然后我们来看反码。反码的规则是若符号位为0,则反码和原码相同。若符号位为1,则数值位全部取反。因此对于正数而言,反码的原码相同。
以8位机器码为例,反码的取值范围是:
因此反码的取值范围为[-127,127]
对于补码来说,正数的补码等于原码。而对于负数的补码,等于反码的末尾+1。
也可以直接从原码转换的补码,规则是原码除了符号位以外全部取反,末尾+1
对于补码来说,表示0的方式只有1种:
以8位机器码为例,补码的取值范围是:
因此补码的取值范围为[-128,127]
移码的计算方法是补码的基础上符号位取反。
对于移码来说,可不是正数的原码和移码相同了!!!
因此移码的取值范围为[-128,127]
校验码的作用:
码距:指一个编码系统中任意两个合法编码之间至少有多少个二进制位不同
比较常用的校验法如下:
比较常用的校验码是海明码,具体定义以及例题如下:
比较常见的还有CRC循环冗余校验法,视频里面没有提,后续根据例题看一看是否需要了解一下。
CRC利用生成多项式为k个数据位产生r个校验码来进行编码,其编码长度为k+r