信息的表示与处理
①信息存储
无符号数:基于传统二进制表示法,表示大于或者等于零的数字。
有符号数:以二进制补码表示。
浮点数:表示实数的科学计数法的以二为基数
②进制转换
二进制、八进制、十进制、十六进制(转换:以二进制作为中间变量)。
③gcc -m32
可以在64位机上生成32位的代码。
④字节顺序
打端法:小对小,大对大。
小端法:与大端法相反。(那这么说8086操作系统是小端法咯!)
⑤逻辑运算
逻辑运算(结果是1或0)和位运算(结果是位向量),所有逻辑运算都可以用与、或、非表达(最大式、最小式),而与或非可以用“与非”或“或非”表达,所以,只要一个与非门,就可以完成所有的逻辑运算。
大量计算机的安全漏洞都是由于计算机算术运算的微妙细节引发的
⑦掩码
位运算的重要应用,表示从一个字中选择一个位的集合。对特定位可以置一,可以清零
通过掩码,可以屏蔽一些信号,掩码表示是设置为有效信号的集合。
⑧整型数据类型
char:字符型数据,占用一个字节 unsigned char:无符号字符型数据,占用一个字节 short:短整形数据,占用两个字节 unsigned short:无符号短整型数据,占用两个字节 int:整形数据,占用两个字节 unsigned int:无符号整型数据,占用两个字节 long:长整型数据,占用四个字节 unsigned long:无符号长整型数据,占用四个字节
C语言中有符号数转换为无符号数时,不改变位表示,也就是说,不同的数据类型C语言读取的方式不一样。
如何让负数变成整数:逐位取反再加一,先非运算,再加一。
扩展为32位时用1扩展负数,用零扩展整数。
溢出就是内存中存储运算结果的空间不够导致,所以为了避免溢出,应该事先估计运算结果的大小,找到合适的存储空间。
⑨浮点数
IEEE:V = (-1)s * M * 2E
s-符号 0为正,1为负
M-小数
E-阶数
向偶舍入(默认):将数字向上或向下舍入,是的结果的最低有效数字为偶数。能用于二进制小数。
向零舍入:把整数向下舍入,负数向上舍入。
向下舍入:正数和负数都向下舍入。
向上舍入:正数和负数都向上舍入。
float中:s、exp和frac字段分别为1位、k = 8 位和n = 23位,得到一个32位的表示
double中:s、exp和frac字段分别为1位、k = 11 位和n = 52位,得到一个64位的表示
整数与小单精度数的转换:符号位+阶数加127的二进制数+去掉开头1位的数+十个0。
问题解决:
上周敲了课本P28的代码,但是怎么都没运行出来,然后这周看了别的同学的博客就明白了,原来是课本上的代码只是给了函数,这些函数需要用主函数去调用。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第零周 | 0/0 | 1/1 | 15/15 | |
第一周 | 0/0 | 1/2 | 25/40 | |
第二周 | 62/62 | 1/3 | 25/65 | |
第三周 | 176/238 | 1/4 | 20/85 |