转载自 http://www.matrix67.com/blog/archives/944/trackback
设想这样一个计算机系统,它只支持以下几个操作:
1. 定义变量、给变量赋值;
2. 变量自身加一;
3. 令一段语句循环执行指定的次数。
这个系统只处理且只能处理0和正整数。系统不存在“溢出”的问题。
注意这个系统没有比较运算,事实上它甚至不存在Boolean值和判断语句。
循环语句也不是FOR i=a TO b DO的形式,只能是LOOP n的形式。
在这个系统上实现加法很容易,让a自增b次即可。现在的问题是,你能在这个系统上实现减法吗?
问题的关键在于如何实现自减一操作。
本来让-1自增n次即可实现n的自减的,但系统偏偏又不支持负数。
网友Dingding给出了一个答案:
tmp = 0
result = 0
loop(n) {
result = tmp
tmp++
}
这段代码执行后,result的值将变为n-1。注意到这段代码在自增时是如何巧妙地延迟了一步的。
现在,我们相当于有了自减一的函数dec。实现a-b只需要令a自减b次即可:
result = a
loop(b) {
dec(result)
}
分享到:
相关推荐
华中科技大学计算机组成原理实验报告(完整)+代码---自己写的 1.掌握一位全加器的实现逻辑, 2.掌握多位可控加减法电路的实现逻辑, 3.熟悉 Logisim 平台基本功能,能在 logisim 中实现多位可控加减法电路。
(9)说明在使用软件HKCPT的联机方式与脱机方式的实现过程(包括编制程序中加减法指令的时序分析,累加器A和有关寄存器、存储器的数据变化以及数据流程)。 (10)课程设计总结(设计的特点、不足、收获与体会)。 ...
编写计算器类,实现加法、减法操作 使用JAVA反射机制动态调用计算器对象的加法,减法函数
任意长的整数加减法运算 设计算法,实现一个任意长的整数进行加法、减法运算的演示程序。例如:1234,5123,4512,3451,2345与-1111,1111,1111,1111,1111的加法结果为:0123,4012,3401,2340,1234。基本...
通过控制台输入输出,DOS窗口,以复数类为例,通过运算符重载成员函数的方式,实现复数类的加减法运算
采用链表数据结构实现,其中包含的操作有链表的遍历,插入结点,删除节点,另含有word说明
此资源为初学汇编的入门程序,masm611中实现选择性的加法减法(sign=1为加,0为减),操作数为键盘输入并显示(十六位以内的)
链表实现多项式加减法操作,输入输出从文件读写
编程实现以下功能: ①分别输入一元多项式pn (x)和Q n (x)。 从键盘输入一元对项式中各项的系数和指数,并用单链表加以表示。 ②分别对一元多项式pn (x)和Q n (x)进行升幂排序。 将一元多项式中各子项按照指数从小...
利用Eclipse3.4+Axis2+ODE1.0+BPEL2.0实现: 根据用户输入操作类型进行相应加减运算,也就是通过条件判断,调用不同的Web服务进行计算,并将结果返回给用户。 附:使用说明。
用硬件描述语言编程实现减法器,实现两个操作数的减法
1. 双向计数器,可以进行递增计数,...2. 根据计数控制信号的不同,在时钟脉冲的作用下,计数器可以进行加1或减1的操作。 3. 位宽为4的可逆计数器,即该计数器在不同控制信号下可以分别实现加法计数和减法计数的功能。
计算机组成原理课程设计 基本模型机的设计-加减法指令的实现,有详细的源代码与实验报告
对日期的加减包括对月,日,年,天的所有操作
单片机C语言实例9:用P0口、P1 口分别显示加法和减法运算结果.txt
1. 任意长的整数加减法运算 设计算法,实现一个任意长的整数进行加法、减法运算的演示程序。例如:1234,5123,4512,3451,2345与-1111,1111,1111,1111,1111的加法结果为:0123,4012,3401,2340,1234。基本...
dsp实现加减乘除,掌握基本算术运算指令及程序设计方法,熟悉程序的控制与转移和重复操作指令及程序设计方法。
主要功能计算两个大整数 (220 位)的加减法等算术运算,按指定的格式输出结果。通过此课题,熟练掌握字符串、格式输出、文件的各种操作,以及基本的计算算法思想的应用。 (二 1.基本要求 (1) 输入功能:能实现从键盘或...
使用struts2技术,实现页面计算器的功能,输入两个操作数,分别点击加法、减法、乘法、除法按钮,分别计算出相应的结果并显示在结果页面中。
1、 选择除法器的算法,本实验开始采用的是减法实现除法器的例子(比如十进制中的a/b,可先比较a与b的大小,如果a>b,则商加1,a<=a-b,再进行比较大小,直到a<b,商不变,余数为a); 2、 选择好算法,进行...