Math 可以生成所有计算的最小数学运算符集是什么?

Math 可以生成所有计算的最小数学运算符集是什么?,math,computer-science,Math,Computer Science,我正在考虑一个最小的指令集CPU,比如说十个或更少的操作码。我想找到仍然可以执行任何通用功能的最小数学操作码集 例如,在逻辑中,运算符AND、OR、NOT是冗余的。您可以使用其他两个运算符计算任何函数,因此最小逻辑运算符集只需要两个 对于算术函数,我可以使用两个操作码吗,也许是加法和位反转? (假设进位和进位跳转指令) 使用ADD和BITINV,我可以在没有显式子运算符的情况下进行减法。乘法和除法是加法和减法的简单扩展。SHL乘以2,SHR除以2 为了涵盖逻辑和算术,它看起来像和,BITINV,

我正在考虑一个最小的指令集CPU,比如说十个或更少的操作码。我想找到仍然可以执行任何通用功能的最小数学操作码集

例如,在逻辑中,运算符AND、OR、NOT是冗余的。您可以使用其他两个运算符计算任何函数,因此最小逻辑运算符集只需要两个

对于算术函数,我可以使用两个操作码吗,也许是加法和位反转? (假设进位和进位跳转指令)

使用ADD和BITINV,我可以在没有显式子运算符的情况下进行减法。乘法和除法是加法和减法的简单扩展。SHL乘以2,SHR除以2


为了涵盖逻辑和算术,它看起来像和,BITINV,ADD是一个完整的最小集合。我遗漏了什么吗?

您可能还需要包含控制指令,如条件语句和跳转,以使指令集图灵完整(或者您的指令集应该能够构造全部)

比如你的问题,

乘法和除法是加法和除法的简单扩展 减法


如果没有循环和条件的概念,这是不正确的(例如,考虑除法的欧几里德算法)。你必须在某个地方有循环才能进行除法。

你可能想看看我昨天发现的这个。这很有趣,启发我找到了一个简单的指令集,其中包含两条以上的指令,但不到十六条。有一个只有一条指令的体系结构:ADD-with-conditional-JMP。由于它是图灵完成的,这意味着您可以执行所有的算术运算。看起来你已经得到了关于数学运算的最小指令集的答案。对于逻辑运算符,你可以用NAND或NOR做任何事情,所以你不需要2条指令。此外,您还需要特定于寄存器和堆栈的操作…您是对的。ADD指令需要一个溢出/进位标志,条件操作码也需要一个跳转。需要加载/存储指令来移动数据。整个处理器可以是这样简单:ADD、BITINV和、JCC、LD、STO