20135234mqy-——信息安全系统设计基础第三周学习总结
(1)计算机将信息按位编码,通常组成字节序列。用不同的编码方式表示整数,师叔和字符串。不同的计算机模型在编码数字和多字节数据中的字节排序时使用不同的约定。
(2)C语言的设计可以包容多种不同字长和数字编码的实现,目前大多数机器使用32位字长。大多数机器对整数使用补码编码,而对浮点数使用IEEE浮点编码。
(3)在相同长度的无符号和有符号整数之间进行强制转换时,大多数C语言实现循环的原则是底层的位模式不变。在补码机器上,对于一个w位的值。这种行为是由函数T2Uw和U2Tw来描述的。C语言隐式的强制类型转换会出现许多程序员无法预计的结果,常常导致程序错误。
(4)由于编码长度有限,与传统的整数和实数运算相比,计算机运算具有完全不同的属性。当超出表示范围,有限长度能够引起数值溢出。当浮点数非常接近于0.0.从而转换成零时,也会下溢。
(5)浮点表示用过将数字编码为x乘以2的y次方的形式近似地表示实数。最常见的浮点表示方式是由IEEE标准754定义的。它提供了几种不同的精度,最常见的是单精度(32位)和双精度(64位)。IEEE浮点也能够表示特殊值,如负无穷,正无穷和NaN。
(6)必须对浮点运算小心的使用,因为浮点运算只有有限的范围和精度,而且不遵守普遍的算数属性,例如结合性 来描述的。
信息存储:
机器及程序将存储器视为一个非常大的字节数组,称为虚拟存储器。存储器的每个字节都由一个唯一的数字来标识,称它为地址,所有可能地址的集合称为虚拟地址空间。
寻址和字节顺序:
(1)大端法(2)小端法
布尔代数:
与& 或| 非~ 异或^
C语言的逻辑运算:
&& || ~ 注意与布尔代数的区别
C语言中的位移运算
<<左移
>>右移(注意区别逻辑右移和算术右移)
重要公式:
(1)补码编码
(2)有符号和无符号数之间的转换
(3)截断数字
(4)无符号数加法
(5)补码加法
(6)补码的非
(7)补码乘法
(8)IEEE浮点表示