第三章 运算方法和运算部件
1、计算机中广泛使用二进制编码
物理上易于实现,即容易找到两个状态稳定且能方便控制其状态转换的物理起见,可以用两个符号分别表示基本符号0和1。
编码、计数和算数运算规则简单,易于用开关电路实现,为提高计算机运算速度和降低实现成本奠定了基础。
基本符号0、1能够方便的和逻辑命题的否、是或者假、真相对应,位计算机中的逻辑运算和程序的逻辑判断提供了便利。
2、计算机中参与运算的数:无符号的数和有符号的数
3、真值&机器数
真值:+/-加某进制数绝对值的形式
机器数:符号化的数叫机器数。0表示+,1表示-,符号数码化
4、无特殊说明时,n位机器字长,1位符号位,n-1位有效数值。
用“,”将整数的数值和符号位分开,用“.” 将小数的数值与符号位分开。
5、十进制数编码:有权码——8421BCD码、2421码(任何两个相加之和等于9的代码互为反码;无权码——余三码(8421加3)、格雷码(任何两个相邻代码只差一个二进制位)
6、数字串在机内的表示形式
字符形式数字串——一个字节(8位)存放一个十进制0~9、+、-的ASCII码值。 → 高四位无数值意义,运算不方便。
压缩的十进制数形式——一个字节存放两个十进制数位(用BCD码或者ASCII码后四位)、符号位占半个字节放在最低位后面。→ 节省空间,便于完成十进制数的运算。
7、汉字的输入编码:数字编码(区位码,4个十进制)、拼音码、字形编码
汉字内码:汉字的机内代码(两个字节)最高位为1
汉字内模码:点阵代表字形
8、十进制变其他进制(eg:2进制)除2,余数从下往上读。
9、原码、补码、反码(均为有符号数)
整数:补码=反码=原码
负数:反码=原码符号除外,各位取反;补码= 原码符号除外,各位取反加1 = 反码+1
补码0只有一个
+1不存在小数补码形式,-1存在小数补码的形式
10、模/模数:机器字长为n位(含一位符号位),则模为2的n次方。
纯小数的模为2
11、模4补码/变形补码/双符号位补码
扩展符号位
12、计算机中将原码变成补码用的是串行电路
求补码要先看正负
相反数的补码 = 补码的相反数 = 将数的补码连同符号位取反加1
补码求真值
补码算数右移:原符号位不变,且符号位和数值为均右移一位
补码的符号位扩展,其值不变:不同位数的整数补码相加减时,位数少的补码数向左扩展,一直扩展到与另一数的符号位对齐。
13、反码只用于原码和补码相互转换的中间过渡。
14、运算溢出:运算结果超出机器数所能表示的范围————(≠被模掉)错误❌
只可能发生在两个同号数相加或者两个异号数相减。
单符号位判溢出:同号相加/异号相减à 结果符号与被加数、被减数相异则溢出
双符号位判溢出:结果双符号位相异则溢出,第一位符号位为真正的符号位
10负溢出,01正溢出
15、十进制加减运算(eg:8421十进制加法):以二进制运算为基础,若和数<10,不需修正;若≥10,需加0110修正。
16、数值范围:一种数据类型所能表示的最大值与最小值
数据精度:实数所能表示的有效数字的位数
均与机器字长与编码方案有关
17、数据的定点表示与浮点表示
定点整数:小数点固定在数的最低位之后
定点小数:小数点固定在数的符号位与数值最高位之间
浮点表示:阶符、阶码值、数符、尾数值
R:基数
阶码(科学计数法的指数部分):移码、补码定点整数 → 浮点数的表示范围
尾数:补码、原码 → 浮点数的表示精度
移码仅用于浮点数的阶码表示——真值上加上一个常数——与补码仅符号位相反。
18、字长固定的情况下提高表示精度的措施
增加尾数的位数:阶码位数减少,数值范围减小
浮点数规格化:移动尾数,使尾数的有效尾数占尽所有满尾数的所有位格。(阶码值会变化)
优点:数据精度高;同一个浮点数的表示形式是唯一的;便于浮点数之间的运算与比较。
19、浮点数规格化
尾数原码表示:不论正负,小数点后第一位为1
尾数补码表示:尾数最高位与数符相反
尾数补码,采用变形补码:
若数符两符号位相同,且与数值最高位相同à左规:尾数左移,每移一位阶码-1
若数符不等à 右规:尾数右移一位,阶码+1。(前面扩展与符号位相同的)
20、定点数溢出——根据数值本身判断
浮点数溢出——根据规格化后的阶码判断
上溢:阶码大于机器最大阶码 → 中断
下溢:阶码小于机器最小阶码 → 零处理
21、机器零:规格化数的尾数为零 or 阶码的值小于机器能表示的最小的值
22、微机数值表示:无符号整数、带符号整数数、浮点数
23、IEEE745标准格式:数符一位、阶码(无符号整数)、尾数(带一位整数的二进制小数真值、即原码)。
规格化:调整阶码,使尾数整数位为1,且与小数点一起隐含掉
24、浮点数与定点数:
定点数:小数点位置固定,表示方法简单;运算规则、运算速度以及进行运算的硬件成本优于浮点数。
浮点数:在数的表示范围、数值精度、溢出处理等方面优于定点数。
25、规格化浮点数加减运算:
对阶操作 → 尾数运算 → 结果规格化 → 舎入操作 → 判断溢出
低阶向高阶补齐,使阶码相等
阶码对齐后直接对尾数进行运算
对尾数运算结果进行规格化处理,尾数溢出需要左规,非规格化需要右规
(处理多余尾数位)丢失最高位位进行0舍1入、或恒置1
判断阶码是否溢出:下溢则将阶码置0,上溢则中断
26、
① 现代计算机(冯氏计算机)→ 基于图灵机模型 → 基于布尔代数 → ∴用二进制
att: 图灵机模型不是计算机的唯一模型,冯氏结构也不是唯一的结构
eg:量子计算机可以用四进制
② 计算机中所有信息都用补码表示❌
③ 计算机中的数据往往用补码来表示✔
∵浮点数中尾数用的原码,阶码用补码
④ 计算机中为什么大多用补码?
答:简化计算机的设计、制造。补码能够将减法转换成加法;数的符号位也可以作为数值一样直接参与运算;变形补码可以进行补码的扩展,而真值不变。(计算机的强一致性)
⑤ 0的补码是唯一的、0的移码也是唯一的