这一章主要还是讲概念,重知识讲解,平时对这些概念基本忽略,而是直接使用的多。
本章讲了“进制”。十进制,十六进制,二进制,八进制,这些都是数字,其值是相等的,不会因为进制的改变,其实际的数量而改变。它的作用为我们展示与应用数据提供了方便,所以这里举几个典型的应用示例:
有一个2字节长的数,其高8位代表小时数,而低8位代表分钟数,此时为4点09分,我们就可以轻松表示为0x0409,如果使用十进制1033,我想你肯定很难看出来是几点几分吧。
数据基本类型,在嵌入式编程环境下,主要还是区分整形与字符型,很少使用浮点类型。它们之间的联系非常紧密,因为全部需要存储空间,所以全部可以用存储空间来解释。先说说字符型,
字符型,主要针对ASCII码使用,表示字符,存储空间为1字节,值域范围0~255。我们常用的printf函数参数就是char型。特别说明以下三个标志性字符:
‘0’ = 0x30;
‘A’ = 0x41;
‘a’ = 0x61;
这三个是基准,剩下的字符可以依据这三个推测出来。
整型,该数据类型还有short int, int , long int等,依编译器的不同而不同,字长也是依据编译器而定。总之,2字节长的整形值域范围就 0~65535;4字节长的,请大家自行计算。
对于整型来说,在平时设计时最关心的还是溢出、有无符号两件事。
溢出:在计算过程中,16位长度还是很容易溢出的,例如对两个整型数据相乘,一不小心就溢出了。还有就是移位操作,大家自行在平时的设计中多留意,我也会在后面的实验设计中再详细讲解。
有无符号:有符号类型,将直接影响了值域范围,另外,有符号类型的数在做移位操作时要多注意。
浮点类型,多数编译器使用4字节长度来存储,与整型数据按位存储不同,浮点数将字长区分为整数区、指数区、小数区等,具体的划分我觉得编译器自己按标准执行吧,这么多年也没有关心与操作过。
本章还讲了优先级的概念,在运算与操作过程中,优先级的概念非常重要。概念非常重要,识别起来要对照那个大表,我表示我平时不会对照表来写代码,比如 *p->head[5] 这个表达式是什么意思?如果写成 *(p->head[5])是不是清晰很多,优先级是不是一目了然了。所以,关于优先级的问题,自己在平时写编程时多用几个括号即可完美解决,放弃那个大表吧~~