《CSAPP》二三章小结

本文深入探讨了二进制运算及类型转换原理,包括补码、位移操作等,并详细介绍了浮点数的IEEE754标准表示方法。此外,文章还讲解了汇编语言中的机器指令,如leaq指令的应用及其与数组寻址的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  此书第二次看的时候确实不如第一遍看激动人心。

在第二章主要是叙述二进制的运算。虽然这回读的是第三版,但依然是不变的二进制表示,加法,乘法。补码,二进制位移。以及类型转换。

这里面有一些很有意思的符合直觉的东西:

位移分左移(右边添加0),逻辑右移(左边添加0),算术右移(左边添加最高位),与此对应的是较小类型整数与其较大类型整数转换,无符号数就补全0,有符号数就补全最高位(因为要保证数字的值是不变的嘛。)

而且有符号无符号数的来回转换也高度符合这个思想:信息的不变性。

计算机是要用寄存器或者内存保存信息的,不能因为随便的转换就把01序列给改变了啊。所以只能是重新解释这一串01序列,也就是最高位是解释成负权值还是正权值的问题。

与此对应的截断,也是底层的01不变,但是确确实实把前面的部分去掉了,然后依据剩余的01序列解释这个数字。

因此要我看,CSAPP里的某些公式(比如T2U之类的),根本不用记忆,某些符合直觉的思想已经告诉我们应该怎样去看待了。

有了这些依据,也就知道为什么负数表示的范围比整数多一个了。(因为实际上负数是与非负数对应的,差的那个便是0)

再说浮点数,浮点数比较奇特,还有+0,-0....

浮点数的描述是按照IEEE754来表达的,一位的符号位,一部分的小数位,一部分的权重。(这两部分在double与float各不一样),由此可以看出浮点数表示不了精确的数字,只是近似值,这在python里依然有这个毛病,做浮点运算总是差一点点。

第三章讲了机器指令,实际上就是汇编语言。

汇编产生的代码往往能反映出机器运行的本质,比如赋值,加减乘除,引用,等等。

这里让我感兴趣的是leaq指令,这个在第二版并没有提到,这个是“披着寻址指令的加乘法”,实际上等于一条mov指令,把地址计算出来然后放到目的寄存器,计算方式等价于数组寻址方式。

数组,结构体实质上是一样的,都是一段连续的内存,但是结构体会补齐空隙,达到2、4、8的倍数,仅仅是给了每段内存的类型罢了。比如s->x就是计算x成员的首地址。甚至二维、多维数组也是如此。这个在第一次看的时候让我着实惊讶了一下。

比如一个数组int a【2】【3】那么a【1】【1】实质上是引用了a+(2*1+1)*4==>a+12处的地址,也就是依靠划分每段为一个“一维数组”,这就能解释为什么一个二维数组按行遍历比按列遍历更快了,这里面实际上还涉及了缓存命中以及局部性的问题。

而联合是max{e1,e2,e3...}即最大元素的空间大小,机器指令中的三种循环都是以do-while实现的,有的加了条件分支罢了。

分支预测有时候并不可靠,但是流水线工作模式会让它继续执行,直到发现错误就返回原来的地方,这称为分支错误处罚。

调用函数会产生控制传递:把当前调用者下一条指令地址保存,跳转到调用的地址处。然后会在栈上分配空间,留给调用函数的运行。其中需要记住的是寄存器最多保存六个参数,再多就要放进内存啦。

对抗缓存区溢出攻击的方法有:栈随机化(分配时地址随机),溢出检测(用金丝雀值做哨兵,监管这个值是否被修改。

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值