综述:数据的作用就是将现实世界的数据规范化,规范成计算机可以识别的数据。
数制
计算机由于自身可以利用高电平和低电平来识别两种不同的信号,所以选用了二进制作为计算机底层所使用的数字。
常用的数制:十进制(人类使用的数字)、二进制(计算机直接使用的数字)、八进制(可以方便的转换为3位二进制)、十六进制(可以方便的转换为4位二进制)
编码
编码就是将人类熟悉的东西映射给计算机,就像一个单值映射的函数。本书主要介绍两种编码:
BCD码:二进制转换为十进制
BCD的分类:
- 8421码(表示权重)
- 2421码(表示权重)
- 余3码(8421码加3)
ASCII码:十进制转换为人类常用的各种符号
校验码
校验码的存在是为了提高信息传输的正确性,可以验证是否传输前后数据发生改变。校验码主要基于两种原理,第一种是根据二进制序列中1的奇偶个数是稳定的,通过判断奇偶性的不变来判断数据正确。用这种原理的是奇偶校验码(单)和海明码(多重)。第二种原理是基于利用线性编码理论,使用这种理论的是循环冗余码。
两种数——定点数和浮点数
定点数就是具体表达某个数字,原码就是十进制直接转换为的二进制数字。浮点数就是利用科学技术法用有限的范围表达更大范围的数字。前者精度高表达范围小,后者精度低表达范围大。
定点数
定点数分为定点小数和定点整数,两者主要的区别是小数点的位置,前者在前后者在后。
定点数又分为有符号数和无符号数。本质就是有无正负号。(1为负,0为正)
有符号定点数在不同的场景中使用四种不同的码,分别是:
原码:与真值直接对应的二进制码(0表示不唯一)
反码:负数的反码是原码符号位不变,数值位取反。正数的原码是他本身。反码一般作为计算补码的中间过程(0表示不唯一)
补码:补码主要针对于负数使用,正数的补码依旧是他本身。补码的提出是为了使减法运算转化为加法运算(因为加法运算的效率远高于减法运算)。负数的补码是反码加一得来的。(0表示唯一)
移码:移码主要用来表示浮点数的阶码,移码是由补码的符号位取反得到的。(0表示唯一)
定点数的运算:
运算依照计算机的基本运算功能分为算术运算和逻辑运算。
移位运算:1)算术移位(对象为带符号数)。2)逻辑移位(对象为无符号数)。3)循环移位
补码加减运算:参与运算的双方都是补码,加法运算就是补码相加,减法运算就是减数的补码加上被减数负数的补码。结果依旧是补码。
高低位运算:低位与高位运算,需要把低位的数字扩展为高位的数字。
溢出运算:两种溢出运算的判别方式:1)参加操作数的符号与结果的符号相反,说明溢出 。2)双符号位法,当结果符号位为01或者10时,说明溢出。
强制类型转换:c语言为例,c语言允许各种不同的数据类型之间进行强制类型转换,强制类型转换的过程中不修改具体的二进制位值,而只是修改了翻译这种二进制码的方式。
浮点数
浮点数表示法是将有限的数据位数划分为阶码和尾数两个部分,阶码作为2的几次方出现,是用来表示范围的,尾数就像定点数一样表达的是具体的精度。就像我们曾经学习过的科学计数法。它显而易见的好处是可以利用有限的空间表达远远大于定点数大小范围的数字,但是在这过程中损失了一定的精度。
浮点数表示:浮点数由阶码、阶符、尾数、尾符组成。阶码和阶符是指数,尾数和尾符是具体的精度。
规格化浮点数:使所有的非零浮点数尾数的最高数位上保证是一个有效值,这样可以充分的利用存储空间。
IEE754:这是国际上常用的浮点数标准应熟练掌握。
浮点数加减运算:对阶——尾数求和——规格化——舍入——溢出判断——强制类型转换
算术逻辑单元ALU
ALU是整个计算机的运算担当,可以实现算术运算和逻辑运算。
而加减乘除都可以转换为加法运算,所以ALU的核心就是加法器。加法器有两种:
串行加法器:逐位相加,速度比较慢,成本比较低。
并行加法器:多位同时相加。速度快,但是电路复杂。
一般在实际中可以以分组的形式,组内并行,组间串行。这在计算机科学中是一种非常常见的思想。成本与效能的平衡,通过分组之后再将组作为一个整体,使用高成本方案和低成本方案一起实现功能,达到最高的性价比。
结语:本章节的内容主要在于将人类文明中的东西通过一些符合计算机逻辑的规则转换为计算机可以识别的东西,只有计算机能认识我们人类的东西,它才能为我们所用。不论是编码还是定点数浮点数都是为计算机量身定做的可以直接使用的产物。这是使用计算机的第一步,可以比喻为教会计算机学会我们人类的语言,我们初步统一了人与计算机的交流内容。
</div>