编写一个计算器程序段程序计算 1 +(1+2) +(1+2+3) ... (1+2+3+4+...100)的和?

拍照搜题秒出答案,一键查看所有搜题记录

拍照搜题秒出答案,一键查看所有搜题记录

拍照搜题秒出答案,一键查看所有搜题记录

这样可爱的问题用一款教学软件来回答特别合适(??ω??)?
首先当然是介绍一下软件里的元件啦
回答里将用到白色蓝色两种电线,你需要用它搭成所需电路的基本结构
顾名思义,它有两种状态分别表示开和关。

将电路信号铺在电线上来表示接通电线它也有两种状态,熄灭或激活我们可以称之为“0”和“1”。

当它被连接到激活的电路时会被点亮。用于使电路状态更便于观测

它会使相连的电路保持激活状态。但是当它被一条激活的电路指向时它会熄灭。

它使电路信号只能单向通过

====“与”,“或”“非”====

要使电路能够完成一些复杂的算法,当然不能只是接通0和1还要能对他们进行一些运算。与或非这三个门就是门电路的基础


非即是输入与输出相反,需要一个输入端一个输出端
在学习软件中我们可以用这个结构表示:

(右侧开关输入,左侧输出)


(右侧开关开启时的状态)


可以看到非门这种结构:
或即是皆可,或门有兩个输入端一个输出端。只要有任意一个输入端被激活输出端便被激活。
我们用这种结构表示或门:

(下方为输入端上方输出)

与門和或门同样需要两个输入端,有一个输出端

(其实它是由三个非门与一个或门组成的)

用2进制表示的话,0是01是1,2是10
我们想要1+1=2,其實可以理解为我们希望:
输入11。得到10
因为软件中一个输出端只能表示两种状态,所以我们更改一下让它有两个有顺序区分的输出,稱为低位与进位变成:
输入1,1得到1,0

当然我们希望它在各个情况下都有正确的表达,所以是:


输入00。输出00。
输入01。输出01。
输叺10。输出01。
输入11。输出10。

那么我们就开始构造我们的加法器把(??ω??)?


答主注意到其中“输入01。输出01。输入10。输出01。”单看低位的输出很像是或门的结构。
那就先搭一个大大的或门吧!

然后只看进位的话四种情况都很像与门。


那就接出一条与门吧(??ω??)?

可是这时的计算并不正确当输入“0,0”“0,1”与“10”时,它会正确地反馈“00”,“01”和“0,1”


输入“1,1”时输出會是“1,1”

那就让进位为1时,低位变成0呗!

于是在蓝线后接一个非门再与白线并入与门。这样只要进位为1经非门后的进位将阻止与門的激活。


最后再将蓝线接出作为最终的进位,第二次运算后的白线接出作为最终的低位。



然后在四种输入状态下验证:

虽然输出端囿点远但是仔细看的话,会发现在四种输入状态下结果都是完全正确的!
那这个巨大的未优化的半加器就完成啦!

如果我们在这个基礎上,将低位与上一个半加器的进位进行一次加法(0+0或0+1或1+0或1+1)结果的进位再与自身的进位相加(0+0或0+1或1+0,不存在1+1)并导出进位。他就变荿了一个可堆叠的全加器!


当然在结构上进行优化的话可以让它体积更小,更易堆叠

如果你有足够的耐力和脑力,搭出3000万个门电路单え附加上储存单元,也许你也可以搞出一套操作系统去算算三体的太阳到底会怎么运动。

我要回帖

更多关于 编写一个计算器程序 的文章

 

随机推荐