【计算机组成&体系结构】整数的表示和运算 | 原码、反码和补码

一、无符号整数的表示和运算

机器字长 决定了计算机能处理多少位的运算以及通用寄存器能存储的位数。例如8位机器字长的计算机只能处理8位的运算,以及通用寄存器只能存储8位。(现代PC的机器字长一般为32位/64位)

1.存储

8位只能存储 0 ~ 255 范围的整数。若超出范围则只能存储最低的8位。

2.加法

无符号数的二进制运算和十进制类似,产生进位就进位即可。

3.减法

减法和十进制不同,二进制的减法分为被减数A减数B

进行减法运算时被减数A 不变。减数B全部取反,末位+1。

然后减法变成加法,用A加变化后的B。如下图所示。


二、带符号整数的表示和运算

1.原码 | 存储

原本的8位存储,拆开为1+7,用一位作为符号位,0代表+,1代表-。其余七位为数值位。

而这也就是所谓的原码。表示范围为 -127 ~ 127。(8位机器字长)

在此表示方法中0的表示会有+0和-0两种形式,但它们表示的数是相同的。

原码不能进行加法运算 ,因为符号位不能参与运算。所以需要补码表示法。

2.原码、反码和补码

上图揭示了三种码的互相转换规则,可以看到原码和反码可以互相转换,但是补码无法以相同的规则反过来转换成反码。

(1)原码与补码的快速转换

在手算中,我们可以从右往左数找到第一个1,这个1左边所有数值位取反就可以得到原码的补码 。同理用此方法我们也可以快速得到补码的原码。

(2)计算机中补码转原码

计算机中将补码转原码与将原码转补码的方式是一样的。补码的数值位全部取反,然后末位+1。

3.补码的加法运算

有了补码之后我们就可以按照我们习惯的思路进行进位加法运算了。且符号位参与运算。得到结果后将结果的补码转为原码就可以得到真值。

4.补码的减法运算

同样的,我们需要把减法变为加法。A-B转为A+(-B)。问题是如何把B 的补码转为**-B**的补码。

上图为如何把B 的补码转为**-B**的补码的操作。全部位(包括符号位)取反,末位+1即可。

快速转换为相反数补码的方式

我们前面提到原码与补码的快速转换,是从右往左第一个1的左边数值位全部取反。

这里补码转换为相反数的补码的操作有些类似,我们依然可以从右往左找到第一个1,只不过这时1左边的所有位包括符号位都要取反才能转换为相反数的补码。

这样我们就可以把补码减法也变成我们熟知的进位加法的形式。如上图所示。

三、 原码、反码和补码特性对比

原码和反码几乎没区别,无符号整数也很好理解。但是补码比较特殊它的表示范围在**-128** ~127 ,可以表示的最小数是**-128**,并且0只有一种表示形式,而原码和反码的0都有两种表示形式。

相关推荐
岑梓铭2 天前
考研408《计算机组成原理》复习笔记,第五章(1)——CPU功能和结构
笔记·考研·408·计算机组成原理·计组
岑梓铭3 天前
考研408《计算机组成原理》复习笔记,第五章(2)——CPU指令执行过程
笔记·考研·408·计算机组成原理·计组
岑梓铭4 天前
考研408《计算机组成原理》复习笔记,第五章(3)——CPU的【数据通路】
笔记·考研·408·计算机组成原理·计组
岑梓铭6 天前
考研408《计算机组成原理》复习笔记,第四章(1)——指令系统概念(指令字长、N地址指令、定长和变长操作码)
笔记·考研·408·计算机组成原理·计组
岑梓铭6 天前
考研408《计算机组成原理》复习笔记,第四章(3)——指令集、汇编语言
笔记·考研·408·计算机组成原理·计组
再睡一夏就好8 天前
【排序算法】⑥快速排序:Hoare、挖坑法、前后指针法
c语言·数据结构·经验分享·学习·算法·排序算法·学习笔记
再睡一夏就好8 天前
【排序算法】⑦归并排序
c语言·数据结构·算法·排序算法·学习笔记
ankleless22 天前
每日学习笔记记录(分享更新版-凌乱)
学习笔记
互联网Fans24 天前
完全使用TRAE和AI 开发一款完整的应用----第一周
学习笔记
万能小锦鲤25 天前
《计算机组成原理与汇编语言程序设计》实验报告二 基本数字逻辑及汉字显示
计算机组成原理·实验报告·logisim·汇编语言程序设计·运算器设计·八位全加器