408第二轮复习记录 计算机组成原理(第二章 数据的表示和运算)
数码与编制
定点数编码表示
根据小数点的位置是否固定,在计算机中有两种数据格式:定点表示和浮点表示。在现代计算机中通常用补码表示整数,原码表示浮点数的尾数部分,用移码表示浮点数结束部分
- 原码表示法: 用机器数的最高位表示数的符号,其余各位表示数的绝对值 范围(-2^n , 2^n)
- 补码表示法:补码表示法中加减法采用统一加法操作实现,正数的补码与原码相同,负数的补码等于模与该负数绝对值之差(补码与真值的相互转换,为正,补码与真值相同 符号位为负,数值位取反+1)
- 变形补码法:双符号位的补码表示
- 移码表示法:移码就是在真值X上加一个常数
C语言中的整数数据类型
char(8),short(16),int(32),long(64)中除char外都默认是有符号的,有符号和无符号都是补码形式
类型转换
- 有符号数和无符号数的转换:强制类型转换的结果是保持位值不变,仅改变解释这些位的方式
- 大字长变量向小字长变量转换的情况:系统把多余的高位部分直接截断,地位直接赋值
- 小字长变量向大字长变脸转换的情况:若原数字是符号数则进行零扩展,否则进行符号扩展
运算方法和运算电路
定点数的加减运算
溢出判别方法
采用一位符号位
两同号数相加时,如果结果的符号与参与运算的操作数符号相反 ,则表明有溢出;
两异号数相减时,如果结果的符号与被减数的符号相反,则表明有溢出
采用两位符号位
10 负溢出说明运算结果为负数
01 正溢出说明运算结果为正数
采用一位符号位跟据数值位的进位情况判断
若符号位的进位与最高数位的进位相同说明无溢出,否则说明有溢出
加减法运算电路
不论是补码的减法还是无符号数减法,都是用被减数加上减数的负数的补码来实现的
- 零标志ZF:ZF = 1表示结果为0,对有符号和无符号都有意义
- 溢出标志OF:判断有符号是否溢出,OF = 1代表溢出,对无符号没有意义
- 符号标志SF:表示结果的符号,对于无符号运算没有意义
- 进借位运算SF:判断无符号是否溢出,对有符号号运算没有意义
定点数的移位运算
逻辑移位
逻辑移位的规则:左移时,高位移出,低位补0;右移时,低位移出,高位补0。
算术移位
左移时,高位移出,低位补0,若高位不同于移出后的符号,即左移后的前后符号位不同则发生溢出;右移时,低位溢出,高位补符号位,若低位的1移出,则影响精度
定点数的乘法运算
定点数的除法运算
错题回顾
12题:相关知识点,模4补码:存储模4补码只需一个符号位,因为任何一个正确的数值,模4补码的两个符号位总是相同的,只在把ALU采用双符号位
浮点数的表示与运算
浮点数的表示格式
第0位为符号S;第1~7位为移码表示的阶码E第8~31为24位二进制的尾数M基数R为2
浮点数的规格化
- 左规:当运算结果不是有效位时,需要进行左规
- 右规:当运算结果的尾数的有效位进到小数点前面时需要右规
IEEE 754标准
格式 | 符号位 (S) | 指数位 (E) | 尾数位 (M) | 指数偏置 | 最小正值 | 最大值 |
---|---|---|---|---|---|---|
单精度 (32 位) | 1 位 | 8 位 | 23 位 | 127 | 约 1.175e-38 | 约 3.402e+38 |
双精度 (64 位) | 1 位 | 11 位 | 52 位 | 1023 | 约 2.225e-308 | 约 1.798e+308 |
单精度和双精度都使用隐藏尾数的方法因而浮点的精度更高,浮点的偏置值不是2^n而是 2^n - 1
IEEE754标准中阶码全为0或全为1时的特殊意义
- 全0阶码全0尾数:+0/-0
- 全1阶码全0尾数:正负∞
- 全1阶码非0尾数:NaN
- 全0阶码非0尾数:非规格数,非规格数的隐藏数为0,单精度和双精度浮点数的指数分别为-126和-1022,非规格数可以处理阶码下溢
浮点数的加减运算
- 对阶
- 尾数加减
- 尾数规格化
- 舍入
- 就近舍入
- 正向舍入
- 负向舍入
- 截断法
- 溢出判断
- 指数上溢(指数超过127或123) 指数下溢( 指数小于最小允许值)
- 右规可能导致上溢,左规可能导致下溢
C语言的浮点数类型
char ->int - > long -> double 和float ->double没有损耗
- int -> float 可能会损失精度
- double - > float 可能会溢出和损失精度
- float -> int 只保留整数部分,同时可能会溢出
数据的大小端和对齐存储
数据的“大端方式”和“小端方式”存储
- 大端方式:先存储高位字节,后存储低位字节
- 小端方式:先存储低位字节,后存储高位字节
数据按边界方式对齐
在c语言边界对齐右两个重要要求:每个成员按其类型的大小对齐,struct 的长度必须时成员中最大对齐值的整数倍
错题回顾
- 13 题 规格化的浮点数与非规格化的浮点数相比增加了表示精度
- 25 题 只有对阶和右规时需要舍入
- 37 题:对于规格数来说最大整数是(2 - 2^-23)*2 ^ 128