本文对学习内容做一个记录,方便后期对知识点复习和补充。
课程:计算机组成原理、操作系统、计算机网络
进制运算的基础
进制概述
进位制是一种记数方式,亦称进位记数法或者位值计数法
有限种数字符号来表示无限的数值
使用的数字符号的数目称为这种进位制的基数或底数
二进制运算的基础
(整数)二进制转十进制:按权展开法
(整数)十进制转换成二进制:重复相除法
(小数)二进制转换成十进制:按权展开法
(小数)十进制转换成二进制:重复相乘法
有符号数与无符号数
原码表示法
使用0表示正数,使用1表示负数
规定符号位位于数值第一位
表达简单明了,是人类最容易理解的表示法
原码表示法的缺点
二进制的补码表示法
例子
引进补码的目的
减法运算复杂,希望找到使用正数替代负数的方法
使用加法替代减法操作,从而消除减法
但是计算补码的过程中,还是使用了减法
二进制的反码表示法
反码的目的是找出原码和补码之间的规律,消除转换过程中的减法
原码、补码、反码规律
定点数与浮点数
定点数的表示方法
小数点固定在某个位置的数称之为定点数
纯小数和纯整数
如果数字不是纯小数,也不是纯整数,则需要乘以比例因子以满足定点数保存格式
浮点数的表示方法
计算机处理的很大程度上不是纯小数或纯整数
数据范围很大,定点数难以表达且定点数不够灵活
因此需要学习了解浮点数
浮点数的表示格式
S:尾数(尾数必须使用纯小数)
r:基数
j:阶码(阶码为二进制)
浮点数的表示范围
假设阶码数值取m位,尾数数值取n位
上溢:这个数绝对值太大了。浮点数无法表示
下溢:这个数绝对值太小了。浮点数无法表示
单精度浮点数:使用4字节、32位来表达浮点数(float)
双精度浮点数:使用8字节、64位来表达浮点数(double)
浮点数的规格化
尾数规定使用纯小数
尾数最高位必须是1
定点数与浮点数的对比
当定点数与浮点数位数相同时,浮点数表示的范围更大
当浮点数尾数为规格化数时,浮点数的精度更高
浮点数的运算包含阶码和尾数,浮点数的运算更为复杂
浮点数在数的表示范围、精度、溢出处理、编程等方面均优于定点数
定点数在数的运算规则、运算速度、硬件成本方面优于浮点数
定点数的加减法运算
加法操作
例子
判断溢出
双符号位判断法
单符号位表示变成双符号:0=>00, 1=>11
双符号位产生的进位丢弃
结果的双符号位不同则表示溢出
减法操作
浮点数的加减法运算
对阶
对阶的目的是使得两个浮点数阶码一致,使得尾数可以进行运算
浮点数尾数运算简单
浮点数尾数实际小数位与阶码有关
阶码按小阶看齐大阶的原则
尾数求和(与定点数相同)
尾数规格化
对补码进行规格化需要判断两种情况:S>0和S<0
左移规格化
右移规格化
双符号位不一致下需要右移
右移的话则需要进行舍入操作
舍去1则需要加1,舍去的是0则不进行加1操作
定点运算双符号不一致为溢出,浮点运算尾数双符号位不一致不算溢出,因为可以进行右移规避
浮点运算主要通过阶码的双符号位判断是否溢出,如果规格化后,阶码双符号位不一致,则认为是溢出
浮点数的乘除法运算
运算过程
浮点数的乘法
浮点数的除法