前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【计算机组成原理】详细解读带符号整数在计算机中的运算

【计算机组成原理】详细解读带符号整数在计算机中的运算

作者头像
蒙奇D索隆
发布2024-12-25 10:35:57
发布2024-12-25 10:35:57
2400
举报

有符号整数的运算

【计算机组成原理】详细解读带符号整数在计算机中的运算_补码
【计算机组成原理】详细解读带符号整数在计算机中的运算_补码

导读

在接下来的内容中,我们将会进一步的深入探讨原、反、补这三种表现形式的内容。今天我们将会从最简单的有符号整数的运算开始介绍。

在前面我们有提到过,有符号整数在通过原码进行运算时,会存在一些问题:

  • 两个不同符号的加法运算(或同符号的减法运算),需要完成三步运算:
  • 比较两个值的绝对值大小
  • 用绝对值大的数减去绝对值小的数
  • 给运算结果选择合适的符号
  • 两个同符号的加法运算(或不同符号的减法运算),需要完成三步运算:
  • 减法运算改为加法运算,即加上被减数的相反数
  • 从右到左,数值位逐位相加,符号位不参与运算
  • 符号位取左操作数的符号

可以看到,同样是加减法运算,仅仅因为加减法的对象不同,其运算的方式却有差异,为了提高运算的效率,降低硬件的开发成本,于是便有了补码,那么在有符号的整数中,其补码形式又是如何进行运算的呢?下面我们就一起来探讨一下补码的加减运算;

一、补码的优势

在原码的运算中,由于机器数的最高位表示的是符号位,并且符号位不参与运算,因此实际在进行运算的只有除符号位以外的数值位,而运算结果的符号,还需要根据结果进行判断,这就导致其运算过程变的及其复杂;

但是在补码的运算中符号位要参与运算,此时我们就不需要再去考虑结果的符号,正常的完成运算后,运算结果的符号也就同时确定了下来,这样就大大降低了运算的难度。

从这几点来看,有符号整数以补码的形式进行存储,并通过补码运算的优势还是很明显的。

二、补码的加法运算

有符号整数的补码加法规则很简单,从右到左,依次相加,逢二进一,如下所示:

【计算机组成原理】详细解读带符号整数在计算机中的运算_反码_12
【计算机组成原理】详细解读带符号整数在计算机中的运算_反码_12

可以看到,整个过程并不复杂,并且这个过程有细心的朋友就会发现,除了后续的补码转换成原码之外,整个加法运算的过程是和无符号整数的加法是一样的。那么这个补码的运算是否和无符号整数的运算有联系呢?

在无符号整数的运算中我们就有介绍过,计算机中,减法电路的造价会高于加法电路的造价,因此,为了节约开发成本,计算机中的减法都会以加法的形式来完成,这里就包括有符号整数的加法。

那在有符号整数中的减法是如何实现的呢?下面我们就来继续探讨一下有符号整数的减法;

三、补码的减法运算

【计算机组成原理】详细解读带符号整数在计算机中的运算_补码_15
【计算机组成原理】详细解读带符号整数在计算机中的运算_补码_15

当完成转换后我们会发现,最终得到的这个数值应该是减数的相反数,为什么会这样呢?

其实这里很好理解,我们要注意看减数的这一步转换是如何执行的:

  • 先转换数值位:按位取反,末位+1,这个一步转换获取的减数对应的原码
  • 再转换符号位:按位取反,此时负数变成了正数

这么一看,经过这一步换算之后,原数的相反数了吗。这时有朋友就会说了,你这是负值的转换,当然没问题了,那正值呢?

这个问题问的非常好,对于正数而言,它的转换过程如下所示:

  • 先转换符号位:按位取反,此时整数变成了负数
  • 再转换数值位:按位取反,末位加1,此时获取的是负数的补码
【计算机组成原理】详细解读带符号整数在计算机中的运算_补码_16
【计算机组成原理】详细解读带符号整数在计算机中的运算_补码_16

从正数的转换来看,我们把这种转换成为获取减数的相反数似乎是不太准确的,更准确的说法应该是相反数的补码:

  • 正数:获取的是其对应负数的补码
  • 负数:获取的是其对应正数的补码

在完成转换后,此时的减法也就变成了加法,其运算规则为:从右到左,逐位相加,逢二进一。

现在大家有发现什么吗?

没错,当有符号整数以补码的形式进行运算时,其运算的过程与无符号整数的运算是一致的,也就是说,用补码的形式来存储有符号整数,在进行运算的时候,可以使用同一个电路来完成无符号整数和有符号整数的运算,而且还是使用造价低的加法电路,

四、原码、反码、补码的特性

接下来我们就来对原码、反码、补码的特性做个总结,以机器数为n位的机器为例,下面我们会从不同的方面来进行对比:

  • 真值0的表示形式
  • 运算方式:
  • 原码:数值位运算,符号位不参与运算
  • 反码:不参与运算
  • 补码:数值位符号位都参与运算
  • 无符号整数:所有二进制位都参与运算

结语

今天的内容到这里就全部结束了,在下一篇内容中我们将介绍《移码》的相关内容,大家记得关注哦!如果大家喜欢博主的内容,可以点赞、收藏加评论支持一下博主,当然也可以将博主的内容转发给你身边需要的朋友。最后感谢各位朋友的支持,咱们下一篇再见!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 有符号整数的运算
  • 导读
  • 一、补码的优势
  • 二、补码的加法运算
  • 三、补码的减法运算
  • 四、原码、反码、补码的特性
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档