您的位置:首页 > 理论基础

深入理解计算机系统(二)---程序结构和执行

2016-05-26 00:28 465 查看
信息的表示和处理:

1. C语言中一个指针的指都是某个存储块的第一个字节的虚拟地址。

2. 字长决定虚拟地址空间的最大大小。

3. 最低有效字节在前面的方式------------小端法(如Intel)。 最高有效字节在前面的方式------------------大端法(如IBM、Sun Micro)。

4. 为了避免在网络传输数据时,不同机器字节顺序不同,网络应用程序的代码编写必须遵守已建立的关于字节顺序的规则。

5. Linux 32, windows, Linux 64 是小端机器, Sun 是大端机器。

6.十进制数字X的ASCII码正好是0x3x,终止字节的十六进制表示0x00.

7. Unicode编码用32位来表示字符。UTF-8 表示将每个字符编码为一个字符序列, 这样标准ASCII 字符还是使用和它们在ASCII中一样的单字节编码。 Java编程语言使用Unicode来表示字符串(c语言也支持)。

8. 即使处理器完全一样,但是运行不同的操作系统,也会有不同的编码规则,因此二进制代码是不兼容的。

9. a^a = 0, (a^b)^a = b.

10. 逻辑运算与位级运算。

11. &&和|| 与 & 和| 区别在于 前者如果对第一个参数确定求值就能确定表达式结果,那么不会对第二个参数求值。 a&&5/a 不会造成被零除。

12. 移位运算:左移右边补0. 右移分为逻辑右移和算术右移。 逻辑右移左端补0, 算术右移左端补最高有效位。

13. java 对于如何右移有明确的定义。 x>>k 算术右移。 x>>>k 逻辑右移。

14. 对于w位的数据结构,移动w位(k>=w),实际上位移量为k mod w。

15. c/c++ :支持有符号数和无符号, java:只支持有符号数。

16. c语言标准并没有规定用补码表示有符号整数。(<limits.h> 中有常量限定了不同整型数据类型的取值范围)

17. 反汇编器是一种将可执行程序文件转换回可读性更好的ASCII码形式的程序。

18. 符号扩展人以为都保持原来的值。 short转换成unsighed时,先改变大小,之后在改变符号。

19. IEEE 浮点表示。符号,尾数,阶码。C语言float(s,exp,frac分别为1位,8位,23位),double(s,exp,frac分别为1,11,52)

1. 规格化数

当 exp不全为零,或者不全为1,32位的偏值位127,对小数字段frac:0<= f<1,尾数定义为:M = 1 + f。

2. 非规格化

exp全为零,阶码值E=1 - Bias , 尾数: M = f .

3. 特殊

exp 全为1, f 全为0, 去穷大。

exp 全为1, f 不全为0, NaN

20. 向偶数舍入法能够运用于二进制小数,对于形如XX...YY100...的二进制位模式,这种舍入方式才有效,其中X和Y表示任意位值,最右边Y是要舍入的位置。只有这种模式表示在两个可能的结果正中间的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: