计算机是怎么excel表格做乘法运算算的

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
计算机组成原理_乘法运算
下载积分:100
内容提示:计算机组成原理_乘法运算
文档格式:PPT|
浏览次数:14|
上传日期: 16:42:13|
文档星级:
全文阅读已结束,如果下载本文需要使用
 100 积分
下载此文档
该用户还上传了这些文档
计算机组成原理_乘法运算
关注微信公众号如何通俗的解释计算机是如何实现1+1=2计算的? - 知乎273被浏览32635分享邀请回答# input a, b
g = p & (g && 1) | g
p = p & (p && 1 | 0b1)
g = p & (g && 2) | g
p = p & (p && 2 | 0b11)
g = p & (g && 4) | g
p = p & (p && 4 | 0b1111)
sum = a ^ b ^ (g && 1)
在硬件实现中,位运算对应各种逻辑萌…哦不对,逻辑门;而位移,直接把电路接上就可以了。为了避免电路的规模过大,有时会将预测器和朴素方法混合使用。总之,它们最终变成了000...10。当两个1的基情结晶从电路的另一头出来的时候,计算器收到了结果——1+1=2。然后计算器说,“好,再把2显示出来吧”。于是它再次找到了图形库,把结果画在了屏幕上。白黑白白白白白白白黑白黑黑白白白黑白白黑黑白白黑白白黑黑黑白白黑白白黑白白白黑白白白黑白白黑白白白白白白白黑白黑黑黑白白白白白黑黑黑白白白白白白白白白白白白白白白白白白白白黑白白白白白黑黑黑白黑白黑白白白白白白白白白白黑白白白白黑黑黑白白黑白白白白白白白白白黑白白白白白白白白白白黑黑黑我们得到了2。56964 条评论分享收藏感谢收起add %t2, %t0, %t1
# %t2 = %t0 + %t1
这行代码翻译成机器码后会变成00
(空格是为了方便读嗯)。翻译方式取决于汇编代码是什么类型,MIPS共有R、I、J三种type的instruction。add是R-type,它的机器码构成见下图接下来先让我们看一个single cycle CPU(pipelined解释起来太复杂,而且和加法运算没啥关系)再来解释上面这串玩意。那么首先机器码是从这个Instruction memory里fetch出来的。随后可以看到datapath分成了好几支:前六位去了Control,中间分成三个五位去了Registers (register file),最后16位稍后解释(注意和前面有重合),而最后五位又进了一个叫做ALU control的单元。是不是好像这分法和前面的机器码的构成有些类似?那么首先机器码是从这个Instruction memory里fetch出来的。随后可以看到datapath分成了好几支:前六位去了Control,中间分成三个五位去了Registers (register file),最后16位稍后解释(注意和前面有重合),而最后五位又进了一个叫做ALU control的单元。是不是好像这分法和前面的机器码的构成有些类似?首先说前六位opcode,这六位是所有三种指令都有的。这六位进入control unit告诉CPU我要执行的是什么样的指令,并改变那些图中蓝色线的值(control signal),对不同的unit进行控制。中间三个五位是register在register file里的地址,这三个register各有各的名字(rs, rt, rd)。上面机器码里的三个数分别对应着%t0 (rs), %t1 (rt), %t2 (rd)三个register的地址。前面两个register输入的是read register的地址,也就是说这两个register中存储的值会变成read data的输出(见上图register file的右端)。在上述指令中,输出的就是%t0, %t1中存储的值。第三个register %t2 (rd)要通过一个Mux才能进入write register,我们姑且假装它就是write register,稍后说这个Mux如何选择输入。知道了write register的地址后,register file就会把write data的数据写入write register对应的地址。也就是说在ALU完成了%t0 + %t1的计算后会把结果存到%t2,这样一来整个指令就完成啦。但我们还有机器码的最后16位和control unit没解释- -。如果看一下I-type的构成就会发现,I-type的最后16位都是一个叫做immediate的玩意。这是另一种汇编指令会用到的,比如我想要把1加到%t1里的值,就可以直接用一个I-type指令addi实现,而不需要把1先写入一个register然后再add(虽然写入的指令也是I-type,不过这就是题外话了),在这里这个数字1就叫做immediate。那么现在问题来了,既然不同的指令种类对机器码有不同的用法,CPU怎么知道该怎么执行指令呢?啊……这其实并没有什么大问题,因为这些数据都是同时被读取的,最后16位跑到Sign-extend那里并不会导致write register无法获取数据。问题是在于这些Mux如何选择输入上,这就要回到control unit上来说了,但在这之前先说说这个Sign-extend是干什么用的。因为这个架构里的数据都是32位的,但I-type的immediate只有16位,怎么办呢,位数不一样没法做加法啊(如果我们用addi的话)。那我们就在前面加16个0呗- -(假设是正数,如果是负数就加16个1)。所以Sign-extend就是做了这么点微小的工作。现在可以回到前面说的control unit了。它控制的control signal除了需要选择Mux的input以外,还有些别的作用。Control unit在知道了进来的指令是R-type后,会把RegWrite设为1,允许register file写入,否则算好了%t0 + %t1这结果也是没法存进%t2的。ALUSrc接入一个Mux,选择Sign-extend的输出或者是read data 2 (rt)来作为ALU的输入(ALU的另一个输入在这里是固定的)。ALUOp十分关键,这告诉ALU control应该给ALU什么信号。对于R-type,ALUOp是10,告诉ALU control读取机器码的最后五位(funct)来决定ALU执行什么计算。在上述代码中funct对应的计算就是加法,于是ALU control便会告诉ALU对两个输入执行加法。随后ALU的输出会经过另一个被MemtoReg控制的Mux,此时control unit已经把这个control signal设为0了,所以输出的数据会一路跑回Write data,最后由于前面提到的RegWrite,成功写入%t2。大功告成!这里还漏了一个和add有关的control signal,就是RegDst,控制着决定了Write register地址的Mux。这里因为Write register应该是rd,所以control unit会把RegDst设为1。PS 很多术语不知道中文,求替换词PPS 如果有什么地方说的不清楚,请尽管提出,我会改善PPPS 当然有什么地方说的不对的也尽管指出图片来自网络,侵删4411 条评论分享收藏感谢收起查看更多回答为了解决用户可能碰到关于"在计算器上怎么样同时将几对相乘的数字相加?"相关的问题,志乐园经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"在计算器上怎么样同时将几对相乘的数字相加?"相关的详细问题如下:
譬如:(2*2)+(3*3)+(4*4)=? 如何在计算器上一次算出来2*2 M+ 3*3 M+ 4+4 M+ MR/CMR和MC有的计算器是分开的,MR是呼出存储的内容,MC是清除。在一起的MR/C的话,第一次按呼出,第二次按清除
||||点击排行计算机乘法除法原理(原码)
由于计算机中,所有数值都是用2的N次方来表示的:2^n0+2^n1+2^n2+2^n3+2^n4.....
因此x*y,(x)*(2^n0+2^n1+2^n2+2^n3+2^n4)=(x*2^n0)+(x*2^n1)+(x*2^n2)+(x*2^n3)+(x*2^n4)+......即(x左移n0)+(x左移n1)+(x左移n2)+(x左移n3)+(x左移n4)+......
用15(x)*13(y)来举例,15*13 为
a.首先y的最低位为1(2^0),x左移0位得到1111
b.然后y的最低第二位为0,没有2^1存在,因此本次无运算(结果可以看作为0)
c.然后y的最低第三位为1(2^2),x左移2位得到111100
d.然后y的最低第四位为1(2^3),x左移3位得到1111000
e.把a、b、c、d的结果相加100+),该结果就是乘法的结果
特别的,x*y中,如果y是2的N次方,因此相当于x右移N位。
2.除法(加减交替法)
x/y其实就是,x不断减y的过程。小学时候学的长长除法就是这个原理。
用二进制的除法x/y,比十进制容易写,商不是0即是1,而且如果除数大于除数的1倍,商就是标记在另一个位上面了
二进制除法x/y=0.1手工计算如下
&&&&&&&&&&&
10010(后面补0)
1110(后面补0)
&&&&&&&&&&&&&
设ri表示第i次运算后所得的余数,则:
若ri&0,则商1,余数和商左移1位,再减去除数,即ri+1=2ri-y
若ri&0,则商0,余数和商左移1位,再加上除数,即ri+1=2ri+y
用85/6来举例,85/6=
a.101(0101)左移1位到第3位都小于110,因此商=000
b.)左移四位是1010,比110大,商=0001,余数=(101)
c.余数100(101)左移一位是1001,比110大,商=00011,余数=(01)
d.余数11(01)左移一位是110,等于110,商=000111,余数=0(1)
e.余数0(1)左移一位是01,小于110,商=0001110,余数=01
因此85/6==0001110,即14,余数为最后的余数1
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 计算机乘法运算 的文章

 

随机推荐