第二章 数据的表示和运算

请添加图片描述

数制与编码

真值:符合人类习惯的数字。
机器数:数字实际存到机器里的形式,正负号需要被数字化。

无符号整数的表示和运算

无符号整数:全部二进制位都是数值位,没有符号位;可表示的最小数全0,最大数全1。
加法:从最低位开始,按位相加,并往更高位进位。逢2进1,把2想象成10。
减法:“被减数不变”,“减数”全部按位取反2,末位+1,减法变加法。

带符号整数的表示和运算

原码
符号位0正1负,剩余的数值位表示真值的绝对值。
若机器字长n+1位,带符号整数的原码表示范围:-(2n-1) ~ (2n-1)。
符号位不能参与运算。
用补码表示真值,符号位可以参与运算。
反码
正数:原码–>反码:不变。
负:原码–>反码:符号位不变,数值位取反。
补码
正:反码–>补码:不变。
负:反码–>补码:末位+1。
负数原码和补码的转换:从右往左找第一个1,这个1左边的所有“数值位”按位取反。
加法:从最低位开始,按位相加,符号位参与运算,往更高位进位。
减法:“被减数不变”,“减数”位全部按位取反,减变加。
原码,反码,补码的特性对比:
原码和反码的合法表示范围相同,都有两种方法表示真值0;补码的合法表示范围比原码多一个负数,只有一种方式表示真值。
移码
补码的基础上将符号位取反,只能用于整数。

计算方法和运算电路

奇偶校验码
奇校验码:整个校验码(有效信息和校验位)中“1”的个数为奇数。
偶校验码:整个校验码(有效信息和校验位)中“1”的个数为偶数。
偶校验的硬件实现:各信息进行异或(模2加)运算,得到的结果即为偶校验位。

算数逻辑单元ALU

ALU
算数运算:加、减、乘、除;
逻辑运算:与、或、非、异或;
辅助功能:移位、求补
在这里插入图片描述

基础电路
在这里插入图片描述

加法实现器
一位全加器:
![在这里插入图片描述](https://img-blog.csdnimg.cn/d954d5e4cd8f4859b3f43620ad66b643.png

串行加法器:串行加法器只有一个全加器,数据逐位串行送入加法器中进行计算。进位触发器用来寄存进位信号,以便参与下一次运算。如果操作数长n位,加法就要分n次进行2,每次产生一位和,并且串行逐位被送回寄存器。
在这里插入图片描述

并行加法器:把n个全加器串接起来,就可进行两个n位数的相加。
在这里插入图片描述

标志位的生成

  • OF:溢出标志,溢出时为1,否则置为0。最高位进位 ⊕ 次高位进位
  • SF:符号标志,结果为负数时置1,否则置0。最高位的本位和
  • ZF:零标志,运算结果为0时置1,否则置0。两个数的运算结果为nbit,只有nbit全为0时ZF=1
  • CF:进位/错位标志,进位/错位时置1,否则置0。最高位产生的进位 ⊕ sub(1加0减)

定点数的移位运算
原码的算术移位:符号位保持不变,仅对数值位进行移位。右移高位补0,低位舍弃,若舍弃位=0,则相当于/2;若舍弃位≠会丢失精度。左移低位补0,高位舍弃,若舍弃的位=0,则相当于×2;若舍弃的位≠0,会出现严重误差。

反码的算数移位:正数的反码与原码相同,因此对正数反码的移位运算也和原码相同:右移高位补0,低位舍弃;左移低位补0,高位舍弃。负数的反码数值位与原码相反,因此右移高位补1低位舍弃;左移低位补1高位舍弃。

补码的算术移位:正数的补码和源码相同,移位运算也相同。负数的补码=反码末位+1,导致反码最右边几个连续的1都因进位而变为0,知道碰到第一个0为止,所以,负数的补码中最右边的1及其右边同原码,最右边的1的左边同反码。
乘法运算
原码:机器字长n+1位,数值部分占n位。符号位通过异或确定;数值部分通过被乘数和乘数绝对值的n轮加法,移位完成。
在这里插入图片描述

补码:符号位,数值位都是由被乘数和乘数进行n轮加法,移位,最后再多来一次加法,每次加法可能+0、+[x]补、+[-x]补;每次移码都是“补码的算数右移”,乘数的符号位参与运算。辅助位-MQ中“最低位”=1时,+[x]补;辅助位-MQ中“最低位”=0时,+0;辅助位-MQ中“最低位”=-1时,+[-x]补。
在这里插入图片描述

除法运算
原码除法:恢复余数法。上商0或1,得到余数,余数末尾补0。会默认上1,如果错了再上0并回复余数。
在这里插入图片描述

原码除法:加减交替法(不恢复余数法)。若余数为负数则直接商0,并让余数左移一位,再加上|除数|。
在这里插入图片描述
补码:加减交替法。
在这里插入图片描述

C语言类型转换
C语言中定点整数是用“补码”存储的。无符号数与有符号数不改变数据内容,改变解释方式。
长整数变短整数:高位截断,保留低位。
短整数变长整数:符号扩展。

数据的存储和排列
大小端模式:多字节数据在内存里一定是占用连续的几个字节。大端便于人类阅读,小段小端便于机器处理。在这里插入图片描述

边界对齐:现代计算机通常是按字节编址,即每个字节1个地址。通常也支持按字,按半字,按字节寻址。在这里插入图片描述

浮点数的表示和运算

浮点数的表示
在这里插入图片描述
阶码E:常用补码或移码表示的定点整数。反映数值的大小。
尾数M:常用原码或补码表示的定点小数。反映精度。
浮点数的真值:N=r^E*M。r表示阶码的底,通常为2。

左规:尾数的最高位是无效值会丧失精度。尾数算数左移1位阶码-1,直到尾数最高位是有效位。
右规:当浮点数运算的结果尾数出现溢出时,将尾数算数右移1位,阶码+1。

规格化浮点数的特点:

  • 用原码表示的尾数进行规格化:正数为0.1xx…x的形式,其最大值表示为0.11…11,最小值为0.100…00。尾数的表示范围为1/2 <= M <= (1-2-n)。负数为1.1xx…x的形式,其最大值表示为1.10…00,最小值为1.111…11。尾数的表示范围为 -(1-2-n) <= M <= -1/2。
  • 用补码表示的尾数进行规格化:正数为0.1xx…x的形式,其最大值表示为0.11…11,最小值为0.100…00。尾数的表示范围为1/2 <= M <= (1-2-n)。负数为1.0xx…x的形式,其最大值表示为1.01…11,最小值为1.00…00。尾数的表示范围为 -1 <= M <= -(1/2+2-n)。

浮点数标准IEEE754
在这里插入图片描述
移码 = 真值+偏置值,IEEE754令偏置值=2n-1-1
阶码用移码表示,尾数数值位用原码表示,隐藏表示最高位1。
在这里插入图片描述
IEEE754单精度浮点型能表示的最小绝对值和最大绝对值:
最小绝对值,尾数全为0,阶码真值为-126,真值为(1.0…0)x2-126
最大绝对值,尾数全为1,阶码真值最大127,真值为(1.1…1)x2127

当阶码E全为0,尾数M不全为0时,表示非规格化小数±(0.xxx)x2-126;
当阶码E全为0,尾数M全为0时,表示真值±0;
当阶码E全为1,尾数M全为0时,表示无穷大;
当阶码E全为1,尾数M不全为0时,表示非数值。

浮点数的运算
加减运算:

  1. 对阶:使两个数的阶码相等,小阶向大阶看齐,尾数右移一位,阶码+1;
  2. 尾数加减
  3. 规格化
  4. 舍入:0舍1入法,类似于十进制运算中的“四舍五入”,即在尾数右移时,被移去的最高位数值为0,则舍去;被移去的最高位数值为1,则在尾数的末位+1,这样做可能会使尾数右溢出,再右规;恒置1法,尾数右移时,使右移后的尾数末位恒置1。
  5. 判溢出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值