首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以使用“按位nand”来定义所有的位运算符,类似于如何使用“布尔nand”构建所有布尔逻辑?

是否可以使用“按位nand”来定义所有的位运算符,类似于如何使用“布尔nand”构建所有布尔逻辑?
EN

Software Engineering用户
提问于 2016-08-31 20:31:56
回答 2查看 2.5K关注 0票数 10

Nand被称为“通用”逻辑门,因为它允许定义所有其他布尔逻辑门:

代码语言:javascript
运行
复制
not(x) = nand(x,x)
and(x, y) = not(nand(x, y))
or(x, y) = nand(not(x), not(y))
nor(x, y) = not(or(x, y))
xor(x, y) = nand(nand(a, nand(a, b)), nand(b, nand(a, b)))

这是众所周知的nand-逻辑,并在现代计算机中常用,因为晶体管可以使行为就像一个nand栅。

我想知道是否有可能对按位操作进行类似的操作。bnotborbandbnorbxor可以用位位nand (bnand)来定义吗?有普遍的按位操作吗?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2016-08-31 20:59:03

在硬件级别上,按位和逻辑没有区别。所以,是的。逻辑操作仅仅是对一个位的按位操作。

票数 13
EN

Software Engineering用户

发布于 2016-08-31 22:01:19

在大多数现代微处理器上,按位操作是本机实现的,因此没有使用NAND操作的好处。

例如,x86指令集有:异或。据我所知,所有这些都是在一个周期内执行的,因此用几个NAND操作替换它们不会有任何好处。它还有一个安丁,它与((NOT x) AND y)相当,它可以由一个聪明的优化编译器生成,以获得一个循环。

RISC运动试图促进精简指令集,以建立一个更简单、更有表现力的架构。其想法是编译器必须将更简单和更快的指令结合起来。然而,除了似乎有些实验或教学处理器,大多数提供了本地NAND以及通常的位操作(例如PowerPC手臂)。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/329855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档