您的位置:首页 > 其它

笔记三 第2章总结及感悟

2016-09-15 22:05 253 查看
前几天太忙。没来得及继续看书。今天趁放假,把第2章看完了。除浮点数知道存储格式,略过原理推导外,其它部分都认真读了。

第二章的核心:数的表示与数的运算。

需要注意下列几类问题:

数的表示

数的表示,按数的类型划分:整数和浮点数。按定义规则,分为有符号数和无符号数。共4个大类。

其中,浮点,可以理解float以及double在内存单元中的定义情况,以及小数如何计算。然后+0.0与-0.0的差别,以及浮点数的表示。要明白,浮点0.0和整数0在计算机中的表示是不一样的。

浮点的三类情况,规格化值,非规格化值,特殊值。以及这三类值的位的表示。

主要的描述,还是在整数上,由于在c语言中,ASCII字符和整数是一类表示方法,只是范围不同,所以弄清了整数就好。

笔记二 习题2.26有符号和无符号引出的问题

描述了有符号及无符号的运算产生的问题。

还涉及到另一类的问题,就是数的越界问题。比如你不清楚传入参数是什么样的数的时候,最好去判断一下,如果超出范围,直接报错。

就和练习题2。37那样,干脆一下,对大家都好。

其中可借鉴的代码如下.假定我们不清楚数据a的关型.假设在32位的机器上,这样下面那种类型是有差别的。

unsigned long long val_1 = (unsigned long long)a;
unsigned long val_2 = (unsigned long)a;
if(val_1 != val_2)
/*overflow*/
else
...


对于数据类型,还有数据符号问题,要慎之又慎。

数的运算

嵌入式开发中,位运算用的实在太多了。然后对于寄存器操作,都用无符号数,这是稍微偏于更底层的运算。在这一层编码时,尽量用位运算解决所有问题,包括位操作,还有一些乘除法的位运算的转化。其中,只有特定的除法可以用位运算。

位运算上层,就是通用的运算。乘除法,让编译器去优化了。但是除法还是最耗时的,特别在嵌入式系统上,尽量少用除法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数字