构成计算机的三个要素是计算单元,存储单元和指令序列。本文试图通过这三要素,将一副扑克牌变成一台简单的计算机。
功能设计
实现五进制数字加法的计算机系统
存储单元
使用1-13不同面值的每一张扑克牌作为存储单元
具体实现
将13种面值的扑克牌分别作为数字的1-13位,数字为五进制数字(逢五进一)。将小王作为当前位的进位,大王作为下一位的进位。初始时,面板上没有扑克牌,相当于数值为0,两个进位也同样为0。当有一个数字输入时,首先做的是0+当前数字的加法。即当前位的数值是几,在面板上的当前位放多少张扑克牌。当再有一个数字输入时,即做当前数字和输入数字的加法运算。运算时需要用到下方描述的指令序列。
指令序列
一一上一
一二上二
一三上三
一四进一下一
二一上一
二二上二
二三进一下二
二四进一下一
三一上一
三二进一下三
三三进一下二
三四进一下一
四一进一下四
四二进一下三
四三进一下二
四四进一下一
初始大王化小
逢零本位不变
低至高位运算
每位两次运算
进位加一运算
系统解释
在最低位时,当前位的进位为0,下一位的进位为0,由于指令要求初始进位时小王的值变成大王的值,大王拿下面板(即把上一次运算的下一位的进位变为当前位的进位,然后把本次的下一位进位置为0)。本次操作后当前位的进位和下一位的进位依然是0。从最低位开始运算,如果当前有1张扑克牌,输入数字当前位如果是1,2,3,是多少数字则再向面板的当前位放置几张扑克牌。如果是4,则按照指令序列的解释,将大王(下一位的进位)放置到面板(即下一位的进位置为1)。做完数值运算后,再将当前位的数值加上当前位进位的值(如果是0则不变,是1按照指令序列运算)。当做完当前位的运算后,进行下一位的运算。在开始运算时,同样将上一次运算时下一位的进位变成当前位的进位,然后把本次的下一位进位置为0。如果当前位有3张扑克牌,则假如输入数字为1,则再放置1张扑克牌,如果是2,则在面板放置大王,当前位拿下3张扑克牌。重复上述过程,直到运算完输入数字的最高位。
所以本计算机不需要使用者会加法运算的原理,只需要认识数字,背下指令序列,按照指令序列进行运算即可。