关于计算机中使用补码运算

技术关于计算机中使用补码运算 关于计算机中使用补码运算1. 原码、反码、补码简单介绍原码、反码、补码都是含有一个符号位的、对带符号数的二进制表示,对应于同一个真值。
原码带符号位直接读出来就是真值。

浅谈补码运算在计算机中的应用

1. 原码、反码、补码简单介绍

原始代码、补码和补码是带有一个符号位的有符号数的二进制表示,对应于相同的真值。

原始代码的带符号位被直接读取为真值。

三个正数合二为一。

负数的补码是符号位不变(即保持为1),其余位反相(可以用同样的方法做相反的转换);

负数的补码是符号位保持不变(即保持为1),其余位反相后,最后一位加1(反向转换也可以用同样的方法)。

进一步理解:

原始代码:符号-幅度。以一个典型的8位二进制为例(如不说明,下同),8位可以分为符号位和幅度区,幅度区是最后7位。

反码:一的补码。人们常说,通过否定运算得到反码的方法,本质上是从1的补码推导出来的。-X的补码(X为正整数)等于1111 1111减去X的8位二进制原码表示(注意前1为符号位,可以参与这里的减法运算。因为被减数是正整数的原始代码,所以符号位是0。用1减去这个0,结果是1。因此,不需要从1的最后7位减去X的原始码的最后7位,然后保持第一位为1,但所有8位都可以直接参与减法)。例如-3的补码可以得到如下:1111 1111-0000 0011=1111 1100,与反相运算得到的结果一致(在反相运算的情况下,原码1000 0011符号位保持不变,其余位反相1111 1100)。

补语:二的补语。这里的二是指2 ^ 8的原码,-X (X为正整数),等于2 ^ 8减去X的8位二进制原码表示,即1 ^ 0000 ^ 000减去X的8位二进制原码表示(注意2 ^ 8需要用9位表示,前1参与减法)。很明显,2 ^ 8比1111 ^ 1111大1,和平时取逆加1正好一样(取逆加1可以帮助快速计算;2 8-x有助于理解补码运算是如何工作的)。

2.补码运算是如何生效的

首先有三种操作:正数加正数;加一个正数和一个负数;负数加负数(计算机只做加法,因为如果做减法,电子元器件需要增加成本才能完成相应的物理实现)。只讨论加数、加数、减数和子树的绝对值小于或等于幅度区域最大值的情况,如8位二进制表示中的127。

1.正加相对简单,省略。

2.为了方便,正加负:把上面提到的8位二进制改成了4位二进制(包括第一个符号位),0111=7是可以表示的最大正数。

结果为正的情况:5-3为例。-3的补码是1 0000-0011=1101。上述操作表明,在1101的基础上加3(即0011),即2 4=16=1 0000,可以完全实现该模块,使最后4位清零。5-3相当于(-3) 5。在加5的过程中,满模块被3清零。为了完成添加5的操作,需要继续添加2。添加2的操作完成后,添加操作完成。只需得到010,即2的补码,5-3=2的运算就在计算机中完成了。

结果为负的情况:的3-5为例。首先详细描述一下运算过程:5的补码为1 0000-0101=1011,(-5) 3: 1011 0011=1110,1110的第一位数字为1,为负数,其绝对值对应的原码为1 0000-1110=0010,即绝对值为2则为1110。首先获得结果的补码1110。在获取原码对应补码的过程中,使用“1 0000-1110=0010”,对应真值到补码的逆运算。真值的绝对值通过这个表达式得到,真值-2通过将0010的第一个0改为1得到。事实上,如果采用逆加一的方法,可以更快地完成原码和补码的相互转换:所有符号位不变(即保持为1),其余位反相后,最后一位加1,t

“结果为正的情况”与“结果为负的情况”如何统一理解:-A运算,一般来说,相当于用A在模块中挖洞(2 ^ 8=256为8位二进制),然后用B来填充。具体来说,首先取模-A,得到-A的补码,其符号位为1。然后开始添加B(1)如果B小于A,则模块无法填充。-A的补码与B相加后,相加结果小于1 0000,即小于等于1111,符号位保持1,仍为负。但加法运算使模数更接近填充,运算结果对应的真值绝对值更接近0,负数更少为负数。而b越大,结果越不负,因为1 0000-(-A的补码加b)对应的是结果绝对值的真值,b越大,结果真值的绝对值越小。考虑到结果是负面的,就没那么负面了。(2)如果

B大于A,那么模将填满,-A的补码加上B后,相加结果大于1 0000,即大于1111,满模溢出,使得符号位由1变为0,从而使运算结果变为正数,此时B越大,运算结果所对应的真值作为一个正数其绝对值越大;(3)可以看到,利用补码进行运算,并令符号位参与运算,能够:满模溢出时符号位变号,使得结果从负变为正;随B的增大,运算结果的绝对值先减小再增大;这符合数学认知。

  3.负加负:1xxx + 1xxx的结果必然溢出,且结果是1 0xxx还是1 1xxx中的一种,前者表示无溢出,后者表示有溢出。至于计算机识别、处理溢出的细节和负加负运算的细节,没弄明白,故不讨论

3.利用原码、反码进行运算的劣势

(此处图片,截取于参考资料1)

参考资料:

1. 为什么计算机采用补码而不是原码或反码 - 醉卧沙场的回答 - 知乎 https://www.zhihu.com/question/352057791/answer/876413629

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/135153.html

(0)

相关推荐

  • go module是如何使用本地包的

    技术go module是如何使用本地包的小编给大家分享一下go module是如何使用本地包的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!g

    攻略 2021年11月27日
  • 抖音一万赞40元,抖音赞多了有什么好处?

    技术抖音一万赞40元,抖音赞多了有什么好处?抖音怎么快速涨粉丝涨赞?抖音快速涨粉丝涨赞技巧。抖音软件中很多人应该都想要粉丝和赞吧!怎么快速涨粉丝涨赞呢?小编为大家带来涨粉丝涨赞的相关技巧,希望能帮助到各位玩家!抖音1w赞

    测评 2021年11月10日
  • 水浒传每回概括200字,水浒传44章概括,200字)

    技术水浒传每回概括200字,水浒传44章概括,200字)●第四十四回 锦豹子小径逢戴宗 病关索长街遇石秀 话说公孙胜与水浒好汉约定的期限已到却迟迟未归水浒传每回概括200字,晁盖、宋江、吴用派戴宗往蓟州探望公孙胜,中途遇

    生活 2021年10月20日
  • 野心勃勃是什么意思,“雄心壮志”是什么意思

    技术野心勃勃是什么意思,“雄心壮志”是什么意思远大的理想和抱负,宏伟的志愿野心勃勃是什么意思。出处:朝代:晋朝作者:陆机原文:《吊魏武帝文》:雄心摧于弱情,壮图终于哀志。白话释义:雄心挫败在弱情,壮图最终在哀志。成语用法

    生活 2021年10月24日
  • arcsinx的不定积分,sinx的反函数的平方积分

    技术arcsinx的不定积分,sinx的反函数的平方积分sinx的反函数为arcsinx的不定积分:y=arcsinx或siny=x(x∈[-1,1])。arcsinx的平方的不定积分,写作:∫ arcsin²x dx分

    生活 2021年10月30日
  • KEGG Network 数据库的原理是什么

    技术KEGG Network 数据库的原理是什么这期内容当中小编将会给大家带来有关KEGG Network 数据库的原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。kegg o

    攻略 2021年12月2日