提问人:user679737 提问时间:3/28/2011 最后编辑:jzduser679737 更新时间:8/14/2012 访问量:30298
更好的方法来确定两个变量是真还是两个变量都为假
Better ways to find if both variables are true or both are false
问:
我有两个变量,可以是 true 或 false。我通过对数据库进行查询来获取这些产品ID。
现在我需要设置另一个变量,该变量为 true 或 false。当两个变量都为 true 或两个变量都为 false 时,它将是 true 值。这将是一个 false 值,一个是 true,另一个是 false。
目前我使用 if 语句处理它
if ( v1 == true && v2 == true )
result = true;
else if ( v1==false && v2 == false )
result = true;
else if ( v1 == true && v2 == false )
result = false;
else if ( v1==false && v2 == true )
result = false;
有没有更好的方法可以做到这一点?
答:
16赞
codaddict
3/28/2011
#1
您可以将逻辑 XOR 运算符和逻辑 NOT 运算符用作:
result = !(v1^v2);
评论
3赞
jmg
3/28/2011
这比必要的要复杂得多,请参阅 DXM 的答案。
157赞
DXM
3/28/2011
#2
我可能遗漏了一些非常基本的东西,但我会试一试:
result = ( v1 == v2 );
评论
10赞
Benoit
3/28/2011
实际上,括号在这里甚至是可选的,因为赋值运算符几乎是 Java、C++、C 等语言中优先级最低的。
5赞
BoltClock
3/28/2011
与布尔值获得如此多赞成票相关的 Java 答案是怎么回事(另请参阅 stackoverflow.com/questions/3907384/...)?:D
3赞
LiuYan 刘研
3/29/2011
+1:哈哈,当我第一次读到这个问题时,我以为它可能是一个异或问题,但这让它变得简单明了。
0赞
corsiKa
3/29/2011
@Benoit编译器是可选的,但是我们程序员经常忘记编译器规则!
0赞
Ruben Bartelink
3/29/2011
@Benoit,你刚才真的是我们吗?:P
2赞
Rune Aamodt
3/28/2011
#3
使用 XOR 运算符 (^):
boolean result = !(v1 ^ v2)
-2赞
vegasaurus
3/28/2011
#4
为什么不直接比较两者呢?
if(v1 == v2) result = true;
-2赞
Troydm
3/28/2011
#5
if(v1 == v2)
return true;
else
return false;
-2赞
sreekanth
3/28/2011
#6
简单的方法是,如果两个变量相等,那么它应该是真的,如果任何一个是假的,那就是假的。 检查这个。
if(v1 == v2)
return true;
else
return false;
5赞
Jerry Asher
3/28/2011
#7
这种问题,给定一个真值表,最小化再现真值所需的逻辑,通常用卡诺图就可以很好地处理
此处的真值表如下所示:
v1 v2 f(v1, v2) t t t t f f f t f f f t
实际上,正如其他人所指出的,给定真值表,对逻辑的基本熟悉应该立即产生函数!异或
但是,如果您将真值表绘制为 Karnaugh 地图,它看起来像:
v2 f t --------- v f| t | f | 1 t| f | t | ---------
函数如下所示:!v1!v2 ||v1v2 如果您再次查看 2 个变量 Karnaugh 映射示例,可以看出它简化为 !异或
诚然,2 个可变的卡诺映射可能最好用普通的逻辑运算来处理,即熟悉和记忆。但是当扩展到 2 个变量之外时,Karnaugh 地图非常有启发性——你应该研究它们。
- http://www.facstaff.bucknell.edu/mastascu/elessonshtml/Logic/Logic3.html
- http://www.allaboutcircuits.com/vol_4/chpt_8/5.html
- http://k-map.sourceforge.net/
评论
2赞
Jerry Asher
3/28/2011
有趣的点赞解决方案选择,我倾向于认为结果 = !(v1 xor v2) 比 result = (v1 == v2) 更清晰。
23赞
Konrad Rudolph
3/28/2011
我礼貌地建议你多喝点咖啡......如果你发现比这更清楚,你一定还在睡觉。还有一场噩梦。!(a ^ b)
a == b
上一个:优化布尔逻辑树计算
评论