一、三种重要的数字表示
无符号:编码基于传统的二进制表示法,表示大于或者等于零的数字。
补码:编码是表示有符号整数的最常见的方式,有 符号整数就是可以为正或者为负的数字。
浮点数:编码是表示实数的科学记数法 的以二为基数的版本。
二、信息存储
1.十六进制表示法
2.字
每台计算机都有一个字长,指明整数和指针数据的标称大小。因为虚拟地址是以这样的一个字来编码的,所以字长决定的最重要的系统参数就是虚拟地址空间的最大大小。对于一个字长为w位的机器而言,虚拟地址的范围为0~2w-1,程序最多访问2w个字节,计算机多为32和64位。
3.字节顺序
小端法——在存储器中按照从最低有效字节到最高有效字节的顺序存储对象。
大端法——从最高有效字节到最低有效字节的顺序存储。
小端法:高对高,低对低。
大端法:高对低,低对高。
4.布尔代数
与或非,取反运算。
用0、1表示真假,以研究逻辑推理的基本原则。
5.C语言中的运算
位级:将十六进制的参数扩展成二进制表示并执行二进制运算,然后再转换回十六进制。
逻辑:逻辑运算符 “||、&&、!”分别对应于命题逻辑中的OR、AND、NOT运算。
移位:对于无符号数据,右移必须是逻辑的。而对于有符号数据,算术的或者逻辑的右移都可以。
6.整数表示
7.无符号数与有符号数转换
强制类型转换的结果保持位值不变,改变解释这些位的方式。
处理同样字长的有、无符号数之间相互转换的规则:数值可能会变,但是位模式不变。(底层的位表示保持不变)
8.IEEE浮点表示
(1)特点
符号:s决定这个数是负数(s = 1)还是正数(s = 0),而对于数值0的符号位解释作为特殊情况处理。
尾数:M是一个二进制小数,它的范围是1 ~ 2-ε,或者是0 ~ 1-ε。
阶码:E的作用是对浮点数据加权,这个权重是2的E次幂(可能是负数)。
(2)两种不同的浮点数据类型
float和double
(3)浮点数的舍入
向偶数舍入(默认)、向零舍入、向下舍入、向上舍入。
三、学习总结
在上周的学习中,我了解到计算机是由处理器和储存器子系统组成的。在这一章我学习了用各类方法来表示基本的数据类型,再操作这些数据。在学习中明白了编译器如何将C程序翻译成这样的指令。在接下来学习的几种实现处理的方法,帮助我们更好的了解硬件资源是如何被用来执行的。
在了解了这些编译器和机器级代码,在今后的c程序编写时就可以获得最高性能。在掌握了这些技术后我们将会写出安全、可靠的充分利用计算机资源的程序。