教材学习内容总结

学习目标

理解二进制在计算机中的重要地位
掌握布尔运算在C语言中的应用
理解有符号整数、无符号整数、浮点数的表示
理解补码的重要性
能避免C语言中溢出,数据类型转换中的陷阱和可能会导致的漏洞
进一步理解“信息=位+上下文”

知识点总结

1:三种数字表示
无符号编码:表示大于或等于零的数字
补码编码:表示有符号整数的最常见方式,可正可负。
浮点数编码:表示实数的科学记数法的以2为基数的版本

2:寻址和字节顺序:
小端法:最低有效字节在最前面(Intel兼容机)
大端法:最高有效字节在最前面(IBM和Oracle)

3:C语言中的位级运算
|(或)
&(与)
~(取反)
^(异或)

4:C语言中的逻辑运算(对应命题逻辑)
||(或)
&&(与)
!(取反)

5:C语言中的移位运算
左移
右移:
逻辑右移:在左端补k个0
算术右移:在左端补k个最高有效位的值
6:整数表示 及数据类型

7:整数运算(重点)

(1)无符号加法
(2)补码加法
(3)补码的非
(4)无符号乘法
(5)补码乘法
(6)乘以常数
(7)除以2的幂

8:浮点数
(1)二进制小数
(2)IEEE浮点表示
(3)数字示例
(4)舍入
(5)浮点运算

代码托管

实践项目

2.96:

刚开始并没有思路,后来参考了上一届学长学姐的提示与解析,才有了思路去做。
其实这道题的一个重点就是按照float读出unsigned字节,而这就需要需要四句程序:
unsigned sign=f>>31;
unsigned exp=f>>23&0xFF;
int exp_E=(int)exp-127;
unsigned frac=f&0x7FFFFF;

出现的问题:pow 未定义的应用
解决方案:在gcc 命令后加-lm

结果图:

时间不够2.97就没有完成了。