计算机系统基础-数据的机器级表示与处理

503 阅读5分钟

计算机系统基础-数据的机器级表示与处理

1. 数制和编码

1.1 信息的二进制编码

  1.1.1 数据是计算机处理的对象,不管以什么形态出现,在计算机内部数据最终都是由机器指令实现。而从机器指令的角度触发,数据只有整数、浮点数和位串几类简单的数据类型。
  1.1.2 每条机器指令的操作数就只能是以下 4 种简单的基本数据类型:无符号定点整数、带符号定点整数、浮点数和非数值型整数。

1.2 进位计数制

  1.2.1 R进制转换成十进制:按权展开。
  1.2.2 十进制转换成R进制:
    1.2.2.1 整数部分:除基取余,上右下左
    1.2.2.2 小数部分:乘基取整,上左下右
  1.2.3 小数点位置约定在固定位置的数称为定点数,小数点位置约定在可浮动的数称为浮点数。
  1.2.4 定点数的编码表示:
    1.2.4.1 通常将数值数据在计算机内部编码后的数称为机器数,而机器数真正的值称为机器数的真值
    1.2.4.2 原码表示法:由符号位直接跟数值位构成。优点:与真值对应直观,乘除运算简单。缺点:0 的表示不唯一,加减运算复杂,在进行加减运算时,需要判定两个异号数相加或者两个同号数相减,若是,则必须判断两个数的绝对值大小,根据判定结果决定符号,并用绝对值大的数减去绝对值小的数。现代计算机用定点原码小数表示浮点数的尾数部分。
    1.2.4.3 补码表示法:可以实现加减运算的统一。对于正数,符号位取 0,其余各位同真值中对应的各位,对于负数,符号位取 1,其余各位由数值部分“按位取反,末尾加 1”得到。
    1.2.4.4 反码表示法:补码末尾减一。缺点在于:0 表示不唯一,表示范围比补码少一个最小负数,运算时必须要考虑循环进位。

1.3 十进制数的表示

  1.3.1 一个十进制数在计算机内部需占多个连续字节,因此在存取一个十进制数时,必须说明其在内存的起始地址和字节个数。

2. 数据的宽度和存储

2.1 数据的宽度和单位

  2.1.1 字长通常指 CPU 内部用于整数运算的数据通路宽度,等于 CPU 内部用于整数运算的运算器位数和通用寄存器宽度。
  2.1.2 用来表示被处理信息的单位,用来度量各种数据类型的宽度。通常系统结构设计需要考虑一台机器将提供哪些数据类型,每种数据类型提供几种宽度的数,此时就需要给出一个基本的的宽度。而字长表示数据运算、存储和传输的部件的宽度,反映了计算机处理信息的能力。字长的长度可以一样,也可以不一样。

2.2 数据的存储和排列顺序

  2.2.1 一般用最低有效位(Least Significant Bit, LSB)和最高有效位(Most Significant Bit, MSB)表示数的最低位和最高位。对于带符号数来说,最高位就是符号位,所以 MSB 就是符号位。
  2.2.2 根据数据各字节在连续地址中排列顺序的不同,可有两种排列方式:大端(big endian)和小端(little endian):
    2.2.2.1 大端方式将数据的最高有效字节存放在小地址单元中,将最低有效字节存放在大地址单元中,即数据的地址就是 MSB 所在的地址。
    2.2.2.2 小端方式将数据的最高有效字节存放在大地址单元中,将最低有效字节存放在小地址单元中,即数据的地址就是 LSB 所在的地址。

3. 数据的基本运算

3.1 按位运算和逻辑运算

  3.1.1 按位运算一个重要运用就是实现掩码操作,通过与给定的一个位模式进行按位与,可以提取所需要的位,然后可以对这些位进行“置1”、“清0”、“是否为1测试”或“是否为0测试”等,这里位模式被称为掩码
  3.1.2 逻辑运算是非数值运算,操作数只有两个逻辑值:TRUE 和 FALSE。

3.2 左移运算和右移运算

  3.2.1 逻辑移位不考虑符号位问题,适用于无符号数的移位操作,左移时,高位移出,低位补0;右移时,低位移出,高位补0。对于无符号整数的逻辑左移,如果最高位移出的是 1,则发生溢出。
  3.2.2 算数移位适用于带符号数的移位操作,左移时,高位移出,低位补0,如果移出的高位不同于移位后的符号位,也即,若左移前、后符号位不同,则发生溢出;右移时,低位移出,高位补符号。

3.3 位扩展运算和位阶段运算

  3.3.1 扩展方式包括两种:0 扩展符号扩展0 扩展用于无符号数,只要在短的无符号数前面添加足够的 0 即可;符号扩展用于补码表示的带符号整数,通过在短的带符号整数前添加足够多的符号位来扩展。