- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图找到一种算法......
我可能假设我的机器适用于:
我也只能使用以下运算符:! ~ & ^ | + << >>
这是我到目前为止得到的:
int isPower2(int x) {
return ( !(x ^ (x & ~x+1)) )); // But this returns 1 if x == 0.
}
为了使此代码正常工作,我将其更改为 ((x ^ 0) && ( !(x ^ (x & ~x+1)
。但我不被允许使用&&
。所以我必须建立一个AND
共 NANDs
使用~
和&
运算符。
但我知道,我可以用NANDs
构建每一个可能的GATE (我只需要 ~
和 &
)。
所以... X AND Y
等于(X NAND Y) NAND (X NAND Y)
-NAND logic
X := (x ^ 0)
Y := !(x ^ (x & ~x+1))
但是正在改变((x ^ 0) && ( !(x ^ (x & ~x+1)) ))
进入~(~((x ^ 0) & !(x ^ (x & ~x+1)) ) & ~((x ^ 0) & !(x ^ (x & ~x+1))))
似乎并没有达到目的。
编辑:我添加了一些额外的信息,希望我的问题现在更清楚了。
最佳答案
问题写得很糟糕,但很有趣试试这个
int isPower2(int x) {
return !(x^(x&~x+1))&!!x;
}
更易读的版本+解释
int isPower2(int x) {
return
(!(
x^(
x&((~x)+1)
)
))
&
(!!x);
}
此代码基于以下事实:2 的幂在二进制表示中具有单个 1
x&((~x)+1)
- 如果 x
是 2 或 1 的幂,则给出 x
,否则给出
1 (0001) -> 0001 & (1110+1) -> 0001 & 1111 -> 0001
2 (0010) -> 0010 & (1101+1) -> 0010 & 1110 -> 0010
3 (0011) -> 0011 & (1100+1) -> 0011 & 1101 -> 0001
4 (0100) -> 0100 & (1011+1) -> 0100 & 1110 -> 0100
5 (0101) -> 0101 & (1010+1) -> 0101 & 1011 -> 0001
我们将结果与 x
进行异或,因为我们得到了 2 和 1
的幂 x
,所以我们得到 0
code> 仅适用于 2 的幂。
稍后我们对结果进行逻辑反转,得到 2 的幂 1
。
为了消除 0
情况,我们与两次逻辑反转的 x
关于将 AND 更改为 NAND 逻辑在 C 中不再起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23720399/
我想实现一个 bool NAND/NOR 门。问题是我在代码本身中即时学习的门没有输入,即我事先不知道它可能有多少输入。以下是 OR 的代码。但我想不出一种方法来为 NOR/NAND 做这件事。结果的
很长一段时间,nand flash都是嵌入式的标配产品。nand flash价格便宜,存储量大,适用于很多的场景。现在很普及的ssd,上面的存储模块其实也是由一块一块nand flash构成的。对于
我在网上搜索过,但没有找到解决此问题的方法。 运算符的逻辑优先级是什么NAND , NOR和 XNOR ? 我的意思是,以表达式为例 A AND B NAND C 应该首先评估哪个运算符? 显然 NA
我正在开发一个使用 NAND 闪存进行存储的嵌入式应用程序。 现在看来,我们不会使用 Linux 或任何其他 RTOS。应用程序必须处理意外断电。 我们一直在寻找不同的文件系统解决方案,包括 YAFF
我在createCriteria中的查询中有一堆行,但是必须进行一些更改,我需要在一行中隐藏带有0的行,在另一列中隐藏带有字母A的行,但是如果它们有,我就不会隐藏它们0和另一个字母,如何在create
在《寻找事物的乐趣》的第 2 章中,Richard P. Feynman 讨论了与构建超小型计算机相关的物理限制。他介绍了可逆逻辑门的概念: The great discovery of Bennet
我在嵌入式产品的dts文件中找到了这段代码。 为什么我们有 NAND flash 而有 NOR flash? 而下面localbus节点中提到的LCS0,LCS1是什么意思呢? loc
我有一个持久性字典(字符串 -> 字符串映射),我将其作为日志文件写入 NAND 文件系统。我的二进制格式是: 1 byte - key size bytes - key without the t
谁能帮我解释一下如何为 NAND 和 NOR 编写查询? 我很困惑?有什么好的例子可以帮助理解查询中的NAND和NOR操作吗? 我在两个 SQL 查询之间进行 AND 和 OR 操作。但是当我搜索与
我有一个 Beagle 板 OMAP3530-GP,我已将内核和 rootfs 复制到 SD 卡的两个分区中并想启动它。 SD卡分区1:FAT32启动分区 具有相同顺序的以下文件: MLO u-boo
R 中是否有一个“合适的”NAND 运算符,例如 nand(condition1, condition 2) 或者它只是最好的实践/唯一的可能性 !(condition1 & condition2)
我有一个算法,它在一个循环中使用 C 按位运算符(> 运算符,并且不想使用任何计算机语言(包括汇编)中的现有算术运算符。 最佳答案 在硬件中,您可以在根本没有任何逻辑门的情况下实现左移 1。只需像
可以使用下面的真值表构建 NAND 的 MP 神经元: P Q P(and not)Q 1 1 0 1 0 1 0 1 0 0 0 0 显示
我有一个整数表,我想选择所有在转换为二进制时不同时设置位 1 和 2 的整数。 或者,对于另一个查询,该查询没有同时设置位 3 和 4。 例如,在具有列名称 decvalue 的表中,其值... 47
我正在尝试在查询之间实现AND NOT操作和NAND操作。 场景 1: SELECT country_name,country_code from country
我正在尝试设计一个带有 OR 和 NAND 操作的查询,谁能告诉我这个查询是否正确: 问题一:这个查询是否正确? select * from country where country_code='A
我正在开发嵌入式 ARM9 开发板。我想重新排列我的 nand 分区。谁能告诉我怎么做? 在我的 u-boot shell 中,如果我给出命令 mtdparts,它提供以下信息。 Boardcon>
我不知道如何编写与这些匹配的正则表达式: everyone hi hi everyone hi 但不是这个: everyone hi everyone 正则表达式 (?:everyone )?hi(?
我想测试我为引导加载未完成的内核而编写的第一阶段引导加载程序,以便我可以调试它并查看它是否有效。是否可以让 Qemu 模拟 NAND 存储设备,从中复制引导加载程序并执行它?如果是这样,我将如何去做?
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
我是一名优秀的程序员,十分优秀!