学汇编的一边儿去。我这里讲的是CPU进行计算的原理。
首先我这里用MC的红石电路模拟了一个加法器:http://www.0xaa55.com/thread-313-1-1.htm
首先加法器是怎么实现的呢?是用了非门电路。首先来看看二进制的加法:
0+0=0
0+1=1
1+0=1
1+1=10
首先来看规律。只看最低位,如果左边的“被加数”和“加数”都一样的话,结果的最低位是0,否则是1.
而如果“被加数”和“加数”都是1,那么就会有进位。
总结出来的规律是:
运算结果最低位=被加数 逻辑非 加数
运算结果的进位=被加数 逻辑与 加数
这个是加法器的原理。
那么回到主题,我说CPU内部只有加法运算。为什么这么说呢?来听我讲解:
CPU对于加法是用的加法运算。那么对于减法是怎么运算的呢?还是用的加法运算。
假设CPU是8位的CPU,那么,让我来举个例子。
01010101+11111111=101010100
得到的计算结果是个9位的二进制数。但是CPU是8位的,寄存器是8位,只能支持8位的二进制计算。多出来的这个位到哪里去了呢?不考虑
一种是CPU把一个数不断加上另一个数,比如3*6,CPU内部就进行3+3+3+3+3+3的运算。
另一种方法是改进了的方法,我举个例:
1010×100100
这个怎么看呢?
首先我们可以把它看成如下:
1000×100100+10×100100
这样就简单了,相当于100100左移3位再加上100100左移1位。
于是CPU内部就先把加数进行移位,然后将移位的加数累加起来。就得到了运算结果了。实质上来说,CPU也只是进行的加法运算。
那么除法运算呢,我这里举个例:10010010÷00101101的商是11,余数是1011。是怎么得来的呢?
其实也和我们小学做竖式的计算一样。
             11
       ________
101101/10010010
        101101
       --------
        1110000
         101101
        -------
           1011
就是这样一位一位除下来。

https://www.0xaa55.com/forum.php?mod=viewthread&tid=318&extra=page%3D14

整数运算:CPU内部只有加法运算的更多相关文章

  1. Problem B: 大整数的加法运算

    Problem B: 大整数的加法运算 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 112  Solved: 57[Submit][Status][W ...

  2. RNN入门(4)利用LSTM实现整数加法运算

      本文将介绍LSTM模型在实现整数加法方面的应用.   我们以0-255之间的整数加法为例,生成的结果在0到510之间.为了能利用深度学习模型模拟整数的加法运算,我们需要将输入的两个加数和输出的结果 ...

  3. 基于Java的大整数运算的实现(加法,减法,乘法)学习笔记

    大整数,顾名思义就是特别大的整数. 一台64位的机器最大能表示的数字是2的64次方减一: 18446744073709551615 java语言中所能表示的整数(int)最小为-2147483648 ...

  4. Java编程的逻辑 (4) - 整数的二进制表示与位运算

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  5. C语言不使用加号实现加法运算的几种方法

    今天看到<编码:隐匿在计算机软硬件背后的语言>的第十二章:二进制加法器.讲述了全加器,半加器的原理以及如何实现加法.实现加法时所使用的全加器,半加器中包含的所有逻辑门在C语言中都有相应的运 ...

  6. 线性结构2 一元多项式的乘法与加法运算 【STL】

    02-线性结构2 一元多项式的乘法与加法运算(20 分) 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和 ...

  7. PTA 02-线性结构2 一元多项式的乘法与加法运算 (20分)

    原题地址 https://pta.patest.cn/pta/test/15/exam/4/question/710 5-2 一元多项式的乘法与加法运算   (20分) 设计函数分别求两个一元多项式的 ...

  8. 为什么位运算可以实现加法(1、 不考虑进位的情况下位运算符中的异或^可以表示+号)(2、 位运算符中的与运算符&和左移运算符<<可以模拟加法中的进位)(3、位运算不仅可以做加法,还可以做其它的乘法减法等:计算机本质是二进制运算)

    为什么位运算可以实现加法(1. 不考虑进位的情况下位运算符中的异或^可以表示+号)(2. 位运算符中的与运算符&和左移运算符<<可以模拟加法中的进位)(3.位运算不仅可以做加法,还 ...

  9. PTA数据结构 习题3.6 一元多项式的乘法与加法运算 (20分)

    一元多项式的乘法与加法运算 https://pintia.cn/problem-sets/434/problems/5865 设计函数分别求两个一元多项式的乘积与和. 时间限制:200 ms 内存限制 ...

随机推荐

  1. C# Regex ignoring non-capturing group

    E.g I want match the keword "3398" after "red" from the string "This is red ...

  2. 项目管理软件伙伴https://www.huobanyun.cn/

    现在项目管理软件市面上很多,但能够完全适合每家公司需求的比较难找,因为众口难调,每家公司都有自己的特殊情况,所以,建议考虑下有比较齐全的基础功能的标准化软件产品,同时又在项目管理开发能力上比较突出. ...

  3. Python的MySQLdb模块安装,连接,操作,增删改

    1. 首先确认python的版本为2.3.4以上,如果不是需要升级python的版本     python -V   检查python版本 2. 安装mysql, 比如安装在/usr/local/my ...

  4. Android Manifest.xml 结构详解

    关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它位于整个项目的根目录,描述了package中暴露的组件(activities ...

  5. HDU 4859(Bestcoder #1 1003)海岸线(网络流之最小割)

    题目地址:HDU4859 做了做杭电多校,知识点会的太少了.还是将重点放在刷专题补知识点上吧,明年的多校才是重点. 这题题目求的最长周长.能够试想一下,这里的海岸线一定是在"."和 ...

  6. android经常使用的电话操作

    给大家分享一下我的一个Android工具类,能够获取手机里面的各种信息,包含拨打电话. 获取全部联系人姓名及电话,插入联系人姓名及电话,插入联系人姓名及电话.插入通话记录.获取用户全部短信.批量插入短 ...

  7. .Net将多个DLL打包为一个DLL(ILMerge)

    在做.Net底层编码过程中,为了功能独立,有可能会生成多个DLL,引用时非常不便.这方面微软提供了一个ILMerge工具原版DOS工具,可以将多个DLL合并成一个.下载完成后需要安装一下,然后通过DO ...

  8. IE浏览器下<A>标签不能显示背景图片

    修改前 background: url('./img/active/legendBg.png')no-repeat 修改后 background: url('./img/active/legendBg ...

  9. JQuery的stop()属性

    $(function(){ $('#input1').hover( function(){ $('.div1').stop() .animate({left:) .animate({top:); } ...

  10. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家( 平衡树 )

    按鲜嫩程度排个序, 从大到小处理, 用平衡树维护价值 ---------------------------------------------------------------------- #i ...