csapp学习笔记——第二章信息的表示和处理
csapp学习笔记——第二章信息的表示和处理
本章主要讲了计算机系统中的数据的表示方法以及在为什么会出现相关的转化问题(float int double等互相转换)。
计算机系统中的数字表示方法
在现实世界中我们使用的是十进制的表示方法,而在计算机系统中我们则使用的是2进制的表示方法(构造储存以及处理信息的工具是二进制比较好实现,比如我们可以用电平的高低来表示1和0,纸带有无孔来表示1和0),我们可以赋予这些二进制数一些特殊的解释,即赋予这些位特殊的含义,来表示出我们所需要的东西。
在有三种数字表示很常见:
1.无符号:传统的二进制表示方法,表示的是大于等于0的整数,只有一种溢出方式
2.补码:与无符号的表示方法不同的是它的最高位表示的是符号位(即1为负0为正)相对应的是它的表示的Tmax<Umax,可能出现正溢出和负溢出这两种溢出方式
3.浮点数:编码是表示实数的科学记数法的以 2 为基数的版本。
溢出
在计算机系统中我们使用的是有限的位来表示数字编码,所以当计算后的数字结果太大时就会出现溢出,
同时浮点的运算有着与整数类型完全不同的数学属性虽然溢出会产生特殊的值 +∞,但是一组正数的乘积总是正的。由于表示的精度有限,浮点运算是不可结合的。例如,在大多数机器上,C 表达式
2.1 信息存储
2.11十六进制表示
0x开头由0-9A-F表试从0到15
字长
补充
1.C++ 编程语言建立在 C 语言基础之上,它们使用完全相同的数字表示和运算。本章中关于 C 的所有内容对 C++ 都有效。另一方面,Java 语言创造了一套新的数字表示和运算标准。C 标准的设计允许多种实现方式,而 Java 标准在数据的格式和编码上是非常精确具体的。本章中多处着重介绍了 Java 支持的表示和运算。