信息的表示和处理:
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是要舍入的位置。只有这种模式表示在两个可能的结果正中间的值。