计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)

2.1 信息存储

字节:

  • 最小可寻址存储单位
  • 8位的块
  • 非单独的位
  • 由唯一数字标识,称为“地址”

对于跨越多字节的程序对象必须建立两个规则:

  • 这个对象的地址是什么?
  • 如何在存储器中排列这些字节?

2.1.1 十六进制表示法

2.1.2 字数据大小

 

 

 

 

 

 

 

计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)

 

计算机有字长,指明指针数据的标称大小

 

 

 

 

2.1.3 寻址和字节顺序

 

 

 

 

 

 

 

计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)

 

 

假设:

 

排列顺序结果可能:

  0x100   0x101   0x102   0x103
  01         23        45         67        大端法
  67    
    45        23         01        小端法

  • 变量x类型为int
  • 位于地址0x100处
  • 16进制为0x01234567
  • 地址范围:0x100~0x103字节
  • 小端法:最低有效字节在最前面
  • 大端法:最高有效字节在最前面

 

 

 

 

2.1.4 表示字符串

2.1.5 表示代码

2.1.6 布尔代数简介

计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)

2.1.7 C语言中的位级运算

  • C语言中的位运算: &,  |,  ~,  ^
    • 适用于任何整型数据类型:long, int, short, char, unsigned
    • 操作数视为位向量
    • 参数位运算

 

 

 

 

 

计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)

 

计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)

 

 

 

2.1.8 C语言的逻辑运算

2.1.9 C语言中的移位运算

计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)

 

 


2.2 整数表示

2.2.1 整型数据类型

2.2.2 无符号数的编码

  • 符号位
    • 对于补码(2’s complement), 最高位表示符号
    • 0 表示非负数( != 正数),1 表示负数

2.2.3 补码编码

  • 补码(正数取反加1)
    •   x =      15213:       00111011    01101101
    •   y =     -15213:      11000100    10010011

 

 

 

 

 

 

 

计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)

 

无符号数与有符号数编码的值

  • 相同
    • 非负数值的编码相同
  • 单值性
    • 每个位模式对应一个唯一的整数值
    • 每个可描述整数有一个唯一编码
  •  Þ 有逆映射
    • U2B(x)  =  B2U-1(x)
      • 无符号整数的位模式
    • T2B(x)  =  B2T-1(x)
      • 补码的位模式

 

 

 

 

2.2.4 有符号数和无符号数之间的转换

 

 

 

 

 

 

 

 

 

 

 

计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)

 

  • 有符号数和无符号数转换规则:
    • 位模式不变
    • 数值可能改变
    • 按不同编码规则重新解读

 

 

 

 

 

 

 

 

 

计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)

 

 

 

 

 

计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)

2.2.5 C语言中的有符号数与无符号数

 

 

 

 

 

  • 常量
    • 数字默认有符号数
    • 无符号数用后缀 “U”
      • 0U, 4294967259U
  • 类型转换
    • 显示的强制类型转换
      • int tx, ty;
      • unsigned ux, uy;
      • tx = (int) ux;
      • uy = (unsigned) ty;
    • 隐式的类型转换(赋值、函数调用等情况下发生)
      • tx = ux;
      • uy = ty;

 

  • 类型转换混淆:表达式计算
    • 表达式中有符号和无符号数混用时:
      • 有符号数隐式转换为无符号数
      • 包括比较运算符 <, >, ==, <=, >=
    • 例如W = 32:
      • TMIN = -2,147,483,648
      • TMAX =  2,147,483,647

 

 

 

2.2.6 扩展一个数字的位表示

 

 

 

 

 

 

 

  • 整数类型向整数类型转换时,C自动进行符号扩展

 

  • 扩展 (例如从short int int的转换)
    • 无符号数: 填充0
    • 有符号数:符号扩展
    • 结果都是明确的预期值

 

 

 

 

 

 

 

计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)

 

 

 

 

 

 

 

计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)

2.2.7 截断数字

  • 截断 (例如从unsigned 到unsigned short的转换)
    • 无论/符号数:多出的位(高位)均被截断
    • 结果重新解读
    • 无符号数: 相当于求模运算
    • 有符号数: 与求模运算相似
    • 对于小整数,结果是明确(正确)的预期值