1、向零舍入。例如:-2.1舍入到-2,3.4舍入到3 2、向下(负无穷)舍入 3、向上(正无穷)舍入 4、向偶数舍入(向离自己最近的整数舍入,靠两个整数的中间时,向偶数舍入)
经过证明可以得到,向偶数舍入的方式误差最小,因此采用此种方式
在二进制的舍入中,如果将要被舍去的首位达到了1,则表明需要舍去的那一部分的值正好达到了所需要精确到的最末位的权重的一半。而舍入后的最后一位总是0,因为这样才能保证舍入到了偶数,如图1所示:
图1第一步:对阶 在手动计算中,有高阶变低阶和低阶变高阶的两种形式,但机器只能选择其中一种。实际上,机器选择了小阶向大阶看齐,这样能够保留高位小数位(右移丢掉的是低有效数字位)
第二步:尾数相加 带上整数部分的1 加完后的结果必须是规格化的
第三步:规格化 相加后最高位进位/退位:需要移位
第四步:判断溢出 溢出只会在阶码出现
第五步:舍入
共有五步,步骤较为繁琐,实际上,主处理器无法完成浮点数的运算,会使用协处理器完成。因此,浮点数运算耗时长,在编程中应尽量少用浮点数乘法
浮点数的括号不能随便写,否则容易出现误差
和十进制数的运算规律相同:阶码相加,尾数相乘。 值得注意的是,阶码相加时,需要减去偏积(Bias)
具有单精度和双精度,和IEEE的标准完全一致
具有强制转换的功能
double/float → \rightarrow →int:截断frac部分,向零舍入。其中,超出范围或出现非数时,一般会被设定为TMin
int → \rightarrow →double:数值上不会超出范围,并且能够完美地被转换(不产生误差),因为double的frac部分有53-bits,超过了int型的31-bits
int → \rightarrow →float:数值上不会超出范围,但会产生误差,因为float的frac部分占用的字节比int型的少
每一个架构都有自己的汇编,此处基于Intel架构
架构(Architecture):用于正确理解机器语言及汇编语言,属于处理器设计的一部分
架构的实现,称之为微架构
机器代码:0/1代码 汇编代码:助记形式
CPU的组成: 1、ALU:算术、逻辑运算单元 2、CU:中央控制单元 3、寄存器:有非常多,放在不同的位置,有不同的用途
PC:专用寄存器,里面存了下一条要执行指令的地址(永远指向下一条要执行的指令)。从PC里面得到地址,地址通过地址总线(PC和主存通过总线(bus)相连)送给Memory,根据此地址在Memory中相应的单元去找指令,将指令送给CPU