当前位置: 首页 > news >正文

计算机如何执行减法运算

计算机中使用累加器(ACC:Accumulator)完成加法运算,但由于在计算机中实现减法器的造价高,所以同样使用累加器来完成减法运算。那怎么样将减法转换为加法呢?

补数

定义

补数是一种处理有符号数的方法,用于变换数字的符号,通过使用补数将减法中的“-”转换为“+”。
例如现在时钟上显示9点钟,想要变换成6点钟,可以逆时针旋转3圈,也可以顺时针旋转9圈。这样达到的效果是相同的。我们将方向定位正负,即-3与+9等价。而数学上称12为模写作(mod 12),而称+9是-3以12为模的补数记为
-3+9(mod 12)
-4+8(mod 12)
-5+7(mod 12)
所以+9是-3以12为模的补数,+8是-4以12为模的补数
|-5|+ 7 = 12 ,|负数|+补数 = 模 ,所以补数一定为正数

结论:(在模确定的情况下)

一个负数可用它的正补数来代替,而这个正补数可以用模加上负数本身来得到。
一个正数和一个负数互为补数时,两数的绝对值之和为模
正数的补数为其自身。

计算方式

计算机科学中,补数的最大应用点为,在处理加法和减法中,不会因为数字的正负使用不同的计算方式。只要一种加法电路就可以处理各种有符号数加法,而且减法可以用一个数加上另一个数的补数来表示,因此只要有加法电路及补数电路即可完成各种有符号数的加法及减法,电路设计上相当方便。计算中会提到几个术语:
● 原码:数值本身
● 取反:0变1,1变0
● 补码:补数
● 符号位:最高位(最左边)表示符号位,其中1表示负,0表示正。
补数在计算机中被称为补码,计算机中用原码取反加一。例如-2的补码计算过程为
1010 --> (取反) 1101 -->(加一)1110 (符号位不变)

减法运算转换成加法运算

将负数用其补码来表示,从而将减法运算转换成加法运算,这样可以使用ACC完成运算。

7-2=7+(-2)=0111+1110 = 10101
左边第一位溢出、忽略, 得到结果为0101,由于符号位为0表示正数,补码为正数,原码也为正数,所以最终结果为0101.

2-7=2+(-7)=0010 + 1001 = 1101
其中符号位为1,表示为负数,补码为负数,原码🟰补码-1 再取反,即 1101–>1100(减一) --> 1011(取反),所以最终结果为1011.

相关文章:

  • 量化交易如何进行回测+模拟+实盘?包括哪些回测框架?
  • 【在线教育】课程科目入门
  • mybatis实现插入数据时获取主键
  • SAP UI5 应用中的 sap.ui.require.toUrl 使用场景
  • Linux 安装subversion+mod_dav_svn,搭建subversion(svn)服务器
  • 面试大厂Java工程师后整理份300+页Java面试宝典
  • electron 基础(2)
  • Webpack浅记
  • 【ISP】浅析AEC
  • Spring配置 + xml的IOC控制反转 + Setter注入
  • 什么叫误差的反向传播,反向传播误差怎么算的
  • 3个妙招,克服面试焦虑,紧张
  • 计算机网络常见面试题
  • Vue项目流程8,导航守卫的使用,图片懒加载,利用vee-validate实现表单验证,路由懒加载,打包并处理map文件
  • vue03模板语法(下)
  • [数据结构]链表的实现在PHP中
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • golang中接口赋值与方法集
  • Java 多线程编程之:notify 和 wait 用法
  • mysql中InnoDB引擎中页的概念
  • nginx 负载服务器优化
  • ReactNativeweexDeviceOne对比
  • socket.io+express实现聊天室的思考(三)
  • SpringBoot 实战 (三) | 配置文件详解
  • V4L2视频输入框架概述
  • 初探 Vue 生命周期和钩子函数
  • 记一次用 NodeJs 实现模拟登录的思路
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 力扣(LeetCode)22
  • 三栏布局总结
  • 通过git安装npm私有模块
  • 微服务核心架构梳理
  • Python 之网络式编程
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​Spring Boot 分片上传文件
  • ​一些不规范的GTID使用场景
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (33)STM32——485实验笔记
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (ZT)薛涌:谈贫说富
  • (zt)最盛行的警世狂言(爆笑)
  • (二)正点原子I.MX6ULL u-boot移植
  • (十六)一篇文章学会Java的常用API
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)Linq学习笔记
  • (转)原始图像数据和PDF中的图像数据
  • ***监测系统的构建(chkrootkit )
  • .bat批处理(一):@echo off
  • .cfg\.dat\.mak(持续补充)
  • .Net 4.0并行库实用性演练
  • .Net mvc总结