• 整数运算:CPU内部只有加法运算


    学汇编的一边儿去。我这里讲的是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

  • 相关阅读:
    iis环境异常处理
    cmd常用命令:关机、注销、进入d盘等
    position
    Register Form
    第一周
    Django简介
    前端jQuery基本语法
    前端基础BOM和DOM
    HTML常用标签
    Linux相关 MySQL相关
  • 原文地址:https://www.cnblogs.com/findumars/p/5557243.html
Copyright © 2020-2023  润新知