计算机组成原理 第二章 数据的表示和运算 中

本文详细讲解了定点数中的无符号数和有符号数(包括原码、反码、补码和移码),重点介绍了移位运算(逻辑右移与算术右移)及其在加减运算中的应用。通过实例说明了不同数制如何处理溢出和精度问题,以及原码乘法的一位乘法和补码乘法的手动模拟过程。

1.定点数

在这里插入图片描述

1.无符号数(unsigned)
n位的无符号数表示范围为: 0 ~ 2n−12^n-12n1

在这里插入图片描述

2.有符号数(原、反、补、移)

在这里插入图片描述

有符号数由符号值+数值部分(也称尾数部分)组成

0为正,1为负

1.原码

在这里插入图片描述

整数范围:n+1位 -(2n−12^n-12n1)<=x<=2n−12^n-12n1
小数范围:n+1位 -(1−2−n1-2^{-n}12n)<=x<=1−2−n1-2^{-n}12n

在这里插入图片描述

2.反码(整数、小数范围和原码一样)

在这里插入图片描述

3.补码
将负数补码转回原码的方法相同:尾数取反,末位+1。

原理:补码的补码是原码。

为什么设计补码?
补码可以将减法操作转变为加法操作,节省硬件成本,ALU中无需集成减法器。
在这里插入图片描述

4.移码

补码的基础上将符号位取反。(**注意:**移码只能用于表示整数。)
在这里插入图片描述

移码好处:方便计算机比较两个数的大小(两个数,谁先出现1,谁就比较大)

在这里插入图片描述
在这里插入图片描述

[x]补求[−x]补方法[x]_{补}求[-x]_{补}方法[x][x]:符号位、数值位全部取反,末位+1

在这里插入图片描述

小结

在这里插入图片描述

2.移位运算

在这里插入图片描述

逻辑右移和算术右移

逻辑右移就是不考虑符号位,右移一位,左边补零即可。
算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,;否则,就补0。
所以算术右移也可以进行有符号位的除法,右移,n位就等于除2的n次方。
例如,8位二进制数110011011100110111001101分别右移一位。
逻辑右移就是[0]1100110[0]1100110[0]1100110
算术右移就是[1]1100110[1]1100110[1]1100110

1.原码
算术右移可能出现丢失精度的问题

高位补0,低位舍弃。若舍弃的位为0,则相当于÷2;若舍弃的位≠0,则会丢失精度。在这里插入图片描述

算术左移可能会出现严重误差

低位补0,高位舍弃。若舍弃的位=0,则相当于×2;若舍弃的位≠0,则会出现严重误差。
在这里插入图片描述

2.反码

在这里插入图片描述
负数的反码数值位与原码相反,因此负数反码的移位运算规则如下:
右移:高位补1,低位舍弃。
左移:低位补1,高位舍弃。

3.加减运算和溢出判断

在这里插入图片描述

溢出判断在这里插入图片描述
符号扩展int->long

在这里插入图片描述

小结

在这里插入图片描述

4.原码的乘法运算

1.原码一位乘法

在这里插入图片描述

2.手动模拟

在这里插入图片描述

5.补码一位乘法

在这里插入图片描述

补码乘法运算要加上一个辅助位,初始为0

在这里插入图片描述

手动模拟

在这里插入图片描述

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jay_fearless

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值