数学里面的加减乘除都是建立加法上面的。

减法:A - B = A + (-B)
乘法:A * B = B 个 A 相加
除法:A / B = A 可以减去多少个 B,又因为减法就是加法。
所以,得出结论,只要加法,就会减法、乘法、除法。

下面来看看计算机是如何进行算术运算的:

加法:比如 4+5?

计算机只认识0和1,它不知道4还有5,计算机的逻辑就是二进制,我们要把4 + 5 转换为 二进制。

4 0000 0100
5 0000 0101 +
————————
9 0000 1001

计算机内部操作原理
第一步,判断有那几位不同,也就是进行异或操作,相同取0,不相同取1.

0000 0100
0000 0101
——————
0000 0001 -------- ①

为什么要进行这些操作呢?

对于0和1,有这三种情况:
0+0 无变化
0+1 等于一
1+1 有进位
三种情况,0+0对数值没有变化,剩下的无非就是两种情况,一是1+0;二是1+1.

第一步的异或运算就是对1+0的情况进行操作。

进行** 异或 操作的原因就是要把单独的1给弄出来,保持那几个位不变,因为1+0绝对等于1,所以进行异或**操作之后,我们就可以知道那几个位是不同的,那几个位相加之后还是1,我们想把相加之后是1的位拿出来。

思考:如果没有进位,异或之后之后就是结果吗。想一想为什么呢??后面有我自己的思考。

第二步,解决1+1 的进位问题,把有一个0+1的情况剔除出去,这里使用“与”运算。

0000 0100
0000 0101
——————
0000 0100 ------- ②

第三位的时候为1,说明第三位的时候两个都为1,相加的话会有进位的情况。

第三步,向左移动一位。

对②向左移动一位,得到 0000 1000 --------③

第四步 解决了1+1的进位问题还有1+0 的问题之后,对③和①进行相加。(对③和①进行相加的原因是,对1+0和1+1的情况的合并)

相加的步骤就是对第一步到第四步循环

① 0000 0001
③ 0000 1000 异或
————————
0000 1001 ---------④
转换为10进制就是9.

与运算

0000 0001
0000 1000
——————
0000 0000

无进位,运算结束,④就是最后的答案。

减法:4-5=?计算机的实现原理。

4-5 其实就是 4+(-5)

第一步,异或运算,负数是用补码来进行运算的。

0000 0100
1111 1011
——————
1111 1111 --------- ①

第二步,进行"与"运算

0000 0100
1111 1011
——————
0000 0000

没有进位,运算结束,答案就是为①。

1111 1111为补码,转化为原码,符号位不变,其他位取反,再加上1.得到 1000 0001,转化为十进制,也就是-1。

乘法这里不做讨论,就是多个书相加。

除法: 5 / 3 = ?

上面说到,除法其实就是 一个数 能减去 另一个数 多少次,减法本质上又是加法。所以运算过程还是一样的。

5/3 其实就是 5- (+3*n + m) = 0,n代表5里面有多少个3,m代表余数。

第一步,进行“异或”运算

0000 0101
1111 1101
——————
1111 1000 --------①

第二步,进行“与”运算

0000 0101
1111 1101
——————
0000 0101 --------②
结果不为0,进行第三步运算。

第三步,进行左移一位。

0000 1010 -------③

第四步,③+①,同样先进行“异或”

1111 1000
0000 1010
——————
1111 0010 --------- ④

第五步,“与运算”,针对的是原来的③和①,(因为我们分析的是③和①的1+0 还有 1+1情况,所以每一次“与”运算针对的都是相加的两个数,“异或”后的数先留着。)

1111 1000
0000 1010
——————
0000 1000
不为零,左移一位,得到 0001 0000 -------⑤

⑤+④
第六步,异或运算

1111 0010
0001 0000
——————
1110 0010 --------⑥

第七步,“与“运算。

1111 0010
0001 0000
——————
0001 0000

不为零,说明有进位,左移一位,得到 0010 0000 ------⑦

第八步,⑥+⑦,异或 运算

1110 0010
0010 0000
——————
1100 0010 ------⑧

第九步,“与“运算。

1110 0010
0010 0000
——————
0010 0000

不为零,说明有进位,左移一位,得到 0100 0000 ------⑨

第十步,⑧+⑨,异或 运算

1100 0010
0100 0000
——————
1000 0010 --------⑩

第十一步,“与“运算。

1100 0010
0100 0000
——————
0100 0000

不为零,说明有进位,左移一位,得到 1000 0000 ------(11)

第十二步,⑩+(11),异或 运算

1000 0010
1000 0000
——————
0000 0010 --------(12)

第十三步,“与“运算。

1000 0010
1000 0000
——————
1000 0000

不为零,说明有进位,左移一位,得到 0000 0000 ------(13)

第十四步,(12)+ (13)

0000 0010
0000 0000
——————
0000 0010 -------(14)

第十五步,“与“运算。

0000 0010
0000 0000
——————
0000 0000

为零,(14)就是答案。转换位十进制 0000 00010 就是2,也就是5除以一个3还有 2,2不够除,就是余数,所以5/3 = 1 … 2。

思考题:如果没有进位的话,那么两个数每相同的位就是0和1,都是两者相加后的结果就真是 0和1 异或 后的结果,所以,如果没有进位的话,其实第一步 异或 后的结果就是答案。

计算机进行加减乘除的原理——万物皆加法相关推荐

  1. 如何使用计算机的加减乘除,计算机是怎么懂加减乘除的

    在学习编程的过程中,计算两个数的和 int a = b + c 这样的代码肯定经常写到,但是计算机到底是怎么计算出来的呢? 加法 说到加法,首先提到的一个概念就是全加器,下图是一个全加器的数字逻辑电路 ...

  2. java之细究String(计算机万物皆二进制序列)

    java之细究String(计算机万物皆二进制序列) 计算机之所以能有今天的强大,其中离不开二进制的发明,如今的智能化电子设备都离不开二进制. 二进制的强大之处就是,使用它你能完成几乎所有的计算,学过 ...

  3. 计算机加减乘除运算原理

    计算机加减乘除运算原理 加减法原理 原码,反码,补码 机器数:数值在计算机中的真实存储:如[+2]为[00000010],[-2]为 [10000010] :其最高位称为符号位,0代表正数,1代表负数 ...

  4. 计算机运行加减乘除哪个最慢,计算机加减乘除运算原理

    计算机加减乘除运算原理 加减法原理 原码,反码,补码 机器数:数值在计算机中的真实存储:如[+2]为[00000010],[-2]为 [10000010] :其最高位称为符号位,0代表正数,1代表负数 ...

  5. 【万物皆可 GAN】CycleGAN 原理详解

    [万物皆可 GAN]CycleGAN 原理详解 概述 CycleGAN 可以做什么 图片转换 图片修复 换脸 CycleGAN 网络结构 CycleGAN 损失函数 概述 CycleGAN (Cycl ...

  6. 云栖大会,未来万物皆是计算机?

    今天,云计算正在创造越来越多的终端新形态.手机不再只是通信,是一款手中的计算机:汽车不再只求"马力",需要比拼"算力",是一台"四轮计算机" ...

  7. 梅宏院士:软件定义的未来——万物皆可互联,一切均可编程 | CNCC 2017

    作者:杨文 摘要:结合当下的人工智能热潮,梅宏教授认为我们正在进入一个软件定义的时代.软件定义的技术本质是把原先一体化的硬件设施打破,将基础硬件虚拟化并提供标准化的基本功能,然后通过管控软件,控制其基 ...

  8. 抽象之美——万物皆可设计

    目录 前言 抽象的层次性 软件设计中的分层抽象 容器虚拟化技术,"抽象维纳空" 化繁为简,抽象思维让万物皆可设计 前言 美好的事物大家都喜欢,人是视觉动物,天生都倾向于看得见和摸得 ...

  9. 【第18期】​未来的计算世界里,将会是“万物皆流”?

    导读:最近,笔者有幸受邀参加了由OSCHINA举办的<高手问答>活动.在第250期项目中,笔者有关实时流计算技术的一些问题与读者进行了互动.在一问一答的过程中,笔者发现大家对"流 ...

最新文章

  1. 基于图机器学习的微生物网络关系预测算法研究
  2. 睿思成研发管理咨询有限公司
  3. 分析Java核心转储
  4. springboot + ApplicationListener
  5. 项目管理——文档的重要性
  6. github单独下载某个文件或文件夹
  7. GreenDao2.2升级GreenDao3.0的适配之路
  8. 【每日算法Day 95】美团笔试题:四面体方案个数
  9. Python开发人员最喜欢的工具
  10. NLP学习03--递归神经网络RNN
  11. Apache Flink 在 bilibili 的多元化探索与实践
  12. tar 打包解压参数详解
  13. 2022环境电器年度行业分析报告:洗地机同比增长357%,扫地机器人销量197万+
  14. java计算机毕业设计高校疫情管理源程序+mysql+系统+lw文档+远程调试
  15. Java POI实现pptpptx转换为pdf文件
  16. 2018 年物联网发展五大趋势预测
  17. 台式cpu温度过高的两个原因及解决方法
  18. 毛永胜计算机教师,呼和浩特市小学信息技术学科基本功获奖教师展示课活动
  19. linux 图片编辑 java_ImageJ For Linux x64(免费开源图片编辑软件)V1.49v官方版下载 - 下载吧...
  20. 如何将Oracle11g卸载干净

热门文章

  1. 刚刚用鸿蒙跑了个“hello world”!我开始怀疑人生了...
  2. 怎么样可以在云服务器上运行你的爬虫程序
  3. GitHub 增加贡献者 统计贡献
  4. 理解Java的OCP和IOC原理
  5. Day33 PO模型
  6. vue 实现答题功能
  7. 跨年晚会之战硝烟四起 各大卫视比拼明星阵容
  8. android+源码usb驱动,安卓打印驱动最全驱动源码库(usbSerialForAndroid)
  9. 局域网内使用公司主机访问自己笔记本上面的虚拟机,实现简易办公
  10. 磁盘rejecting I/O to offline device故障导致4TB生产数据库无法访问