基本的规则就是:
加法:
整数: [A]补 + [B]补 = [A+B]补 (mod 2^(n+1))
小数: [A]补 + [B]补 = [A+B]补 (mod 2)

减法:
整数: [A-B]补 = [A]补 + [-B]补 (mod 2^(n+1))
小数: [A-B]补 = [A]补 + [-B]补(mod 2)
[-B]补的求法就是 [B]补的连同符号位在内,每位求反加一

ps:这里假定了A,B都是正数

如果你直接写出了负数的补码,那么直接计算就好了。由[-B]补求解[B]补,或者由[B]补求[-B]补,都是连同符号位每位求反加一,本身就表达着,只要是补码,直接计算即可。
下面的例子可以很好说明:

设机器数字长为8位,一位用作符号位。若A = +15, B = +24,求[A-B]补,并且还原成真值。
ps:这里的还原你真的是把求出的补码算出真值不是用15 - 24 = -9口算的吗。。

解:首先是换成二进制原码:A = +15 = 0,0001111; B = +24 = 0,0011000
换成补码:[A]补 = 0,0001111, [B]补 = 0,0011000,[-B]补 = 1,1101000

以上是标准的算前准备
[A-B]补 = [A]补 + [-B]补
0,0001111
+1,1101000
= 1,1110111

也可以这么想:直接求A-B补码相减:
0,0001111

  • 1,1101000
    = 1,1110111

从第九位(未知)借来一个2,求得结果也是我们需要的补码。

真值为-9。

总结:不论操作数是正还是负,在做补码运算时,只需要将符号位和数值部分一起参加运算,并且将符号位产生的进位自然丢掉即可。也可以从更高位借过来一个参与运算,这样,符号位会用1的方式表示,好吧我没你大,形成的是负值。

在这种减法形式的计算中,需要注意的是借位的事情。
十进制中:
1000

  • 99
    =901

过程是这样:1000的个位是0减不动,向高位借来一个10,在高位看来只是1但是下面看来是10,好的,10可以减动9了得到个位是1;1000的十位是0,而且还被个位借去了一个,所以严格来说十位叫-1,好的,-1减不动9,需要从百位借,百位给了一个在它看来是1,但在十位看来是10,好的,十位借到了,先还自己的债务1,只剩9了,9再减9,可以减动了,得到0;1000的百位自己也是0,且被借走了一个,因此可以是-1,往千位借,还完债务,剩9,没什么好减的了,于是最终结果还是9.
所以得到901.

同理,在二进制下,也是一样的思路。
用一个例子来看:求1,0100011 - 1,1010011
1,0100011
-0,0101101
=0,1110110

过程:也是从第一位开始减,1-1 = 0;第二位:1-0 = 1;第三位:0-1 = 1,且第四位有1的负债(不看存款);
第四位:存款是0,负债是1,那么自己就是-1啊,减不动1,于是借来2,先还负债,剩下1,再减1 = 0;
第五位:也负债1,借来1,减的是0所以还剩1;
第六位:本来是1,被第五位借走了,所以只剩0了,减不动1,所以向第七位借来2,减去1还剩1;
第七位:本身是0,被第六位借走了1,所以是-1,要减0,先借来2,还债后剩1,减0还是1
第八位:本身是1,被借走了,好嘛,那就 剩0了,刚好需要减的也是0,不要再往上借了。当然,需要借的时候也行,那个超出八位以后的东西,从虚空中拿来,不用还!

溢出判断:
1.只有一位符号位的,实际参加操作的两个数,这个是指,如果是A-B,看到是[A]补和[-B]补的符号位
如果这两个符号位相同,但是求出来的结果(补码结果)符号位不同,那么就是溢出了。

2.有两位符号位:当两位符号位不同时表示溢出,否则无溢出。
无论是否有溢出,最高位的符号位表示真正的符号。
————————————————
版权声明:本文为CSDN博主「DrCrypto」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011240016/article/details/52433355

关于二进制补码运算【转载】相关推荐

  1. 二进制补码加减运算的溢出检查

    文章目录 前言 法一(较少使用) 法二 法三(常用) 例题 前言 此文章不涉及相应的二进制补码的加减运算,仅对其溢出的问题进行讨论. 例题中有包含相应的解释,如果通过这三个方法检测都没有问题时,结果不 ...

  2. 正负数二进制表示,正负数二进制移位运算、二进制源码、反码、补码

    源码 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. [+1] 的原码 = 0000 0001 [-1] 的原码 = 1000 0001 第一位是符号位. 因为第一位是符号位, ...

  3. 整数二进制补码的数学原理(two's complement)

    转载自整数二进制补码的数学原理(two's complement) ================================================================== ...

  4. 计算机组成原理整数乘法,计算机组成原理 - 定点整数的原码补码运算(待验证)...

    计算机组成原理 - 定点整数的原码补码运算(待验证) 目录 〇.环境 对象 运算 定点整数原码.定点整数补码 移位.加.减.乘.除 原码定义: \(x=\begin{cases} x &0\l ...

  5. 二进制补码求值用c语言,C语言程序设计第2章数据类型.运算符与表达式.ppt

    C语言程序设计第2章数据类型.运算符与表达式 教学目标 掌握C语言标识符的组成 理解C语言的基本数据类型 掌握变量定义的方法 掌握常用的运算符的使用 掌握混合运算的数据转换方法 2.1 C语言的数据类 ...

  6. leetcode 371. Sum of Two Integers | 371. 两整数之和(补码运算)

    题目 https://leetcode.com/problems/sum-of-two-integers/ 题解 根据 related topics 可知,本题考察二进制运算. 第一次提交的时候,没想 ...

  7. 二进制补码以及为什么要使用补码

    计算机系统的内部以二进制形式存储数据. 在Java程序中输入的十进制的数据都会被自动转换为二进制,Java内部也以二进制来进行数值运算,但返回的结果是十进制. 补码规则 在计算机系统中,数值一律用二进 ...

  8. 如何用计算机二进制进行计算,计算机如何实现二进制数据运算

    正数的原码,补码,反码都相同,都等于它本身 负数的补码是:符号位为1,其余各位求反,末位加1 反码是:符号位为1,其余各位求反,但末位不加1 也就是说,反码末位加上1就是补码 1. 定点小数的编码方法 ...

  9. 2---MATLAB将十进制转换成二进制补码

    MATLAB中提供了一个将十进制转换为二进制的函数dec2bin,但是该函数只接收非负整数,也就是不能直接将负数转换为二进制补码.那如何在MATLAB中生成补码呢?我们都知道负数的补码为其反码加1,然 ...

最新文章

  1. java web常用权限方式,java web项目的几种权限控制方法
  2. why in GM0 our extension component this.sPath is not correct
  3. [MyBatisPlus]Plus分页插件的配置和使用
  4. 商城报表系统html5,关于html5:推荐这几款主流报表产品
  5. mysql3.5.2 下载_mybatis 3.5.2 jar 下载
  6. angular cli_使用Angular CLI连接到服务器的最佳方法
  7. c 判断文件是否存在_C++基础:判断文件是否存在的方法
  8. perl表达 匿名数组和匿名哈希
  9. TurboMail邮件系统配置之预防邮件炸弹
  10. 怎么注册tk域名_TK域名免费注册及解析图文教程
  11. 使用putty进行UART串口调试
  12. 卷死我了,终于毕业了!!
  13. Android项目解耦--路由框架ARouter的使用
  14. 【机器学习之逻辑回归】sklearn+python逻辑回归详解
  15. 估计量的无偏性,有效性和一致性
  16. OCR光学字符识别(一)
  17. 抓包工具之Fiddler(一)
  18. iPad/Iphone抓包
  19. 第九章 java常用类
  20. 如何推广一个新的App软件

热门文章

  1. 手把手教你python实现量价形态选股知乎_用 Python 实现你的量化交易策略
  2. Flutter 全平台 sqlite/sqlcipher orm 框架 drift(原moor)的使用
  3. HTTPS 原理及中间人攻击
  4. OneNote:怎么彻底删除笔记本
  5. python中int 3.14_警告:在Scipy 1.14.3中不推荐使用imresize
  6. iMovie导出的mp4在windows下播放一卡一卡的怎么办
  7. 蚂蚁森林 回赠 和 浇水的差别 送 主页解析
  8. 自定义 RPC框架3——JAVA实现Zookeeper节点增删改查
  9. 解密 Python 中的对象模型
  10. mysql数据库电脑配置_数据库电脑配置要求