标签: boolean-logic

为什么有些逻辑运算符如此之慢?

虽然试图优化我的代码,我发现了一些logical操作进行比较,以类似的操作时,比我预想的要慢integernumeric.

于是我就到重写基本布尔运算符!,&,|,xor如下:

my.not <- function(x) as.logical(1L - as.integer(x))
my.and <- function(e1, e2) as.logical(as.integer(e1) * as.integer(e2))
my.or  <- function(e1, e2) as.logical(as.integer(e1) + as.integer(e2))
my.xor <- function(e1, e2) as.logical(as.integer(e1) + as.integer(e2) == 1L)
Run Code Online (Sandbox Code Playgroud)

测试一切是否按预期工作:

a <- sample(c(TRUE, FALSE), 1e6, TRUE)
b <- sample(c(TRUE, FALSE), 1e6, TRUE)

identical(!a, my.not(a))             # TRUE
identical(a & b, my.and(a, b))       # TRUE
identical(a | b, my.or(a, b))        # TRUE
identical(xor(a, b), my.xor(a, b)) …
Run Code Online (Sandbox Code Playgroud)

boolean-logic r

27
推荐指数
2
解决办法
1002
查看次数

什么!a &&(a || b)简化为?

我有点困惑!a&&(a||b).如果我直接看它并简单地解释它,它看起来好像是一样的

!a&&a or !a&&b
Run Code Online (Sandbox Code Playgroud)

但这似乎有点奇怪,因为既然a不可能是真实的,那么只有后者是真的才会成真.我也像这样解释它

!a || a&&b
Run Code Online (Sandbox Code Playgroud)

我真的不知道我是如何想出这个,但它看起来更合乎逻辑,因为没有矛盾.有人可以帮我吗?

language-agnostic boolean-logic

24
推荐指数
4
解决办法
2192
查看次数

Haskell中广泛模式匹配的清洁替代方案

现在,我有一些基本上像这样的代码:

data Expression 
    = Literal Bool 
    | Variable String
    | Not Expression 
    | Or Expression Expression 
    | And Expression Expression
    deriving Eq

simplify :: Expression -> Expression
simplify (Literal b) = Literal b
simplify (Variable s) = Variable s
simplify (Not e) = case simplify e of
    (Literal b) -> Literal (not b)
    e'          -> Not e'
simplify (And a b) = case (simplify a, simplify b) of
    (Literal False, _) -> Literal False
    (_, Literal False) -> Literal False …
Run Code Online (Sandbox Code Playgroud)

haskell boolean-logic pattern-matching

22
推荐指数
3
解决办法
1024
查看次数

更好的方法来查找两个变量是否为真或两者都是错误的

我有两个变量,可以是true或false.我通过在数据库上查询某些产品ID的存在与否来获得这些.

现在我需要设置另一个变量,它将是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;
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点?

java boolean-logic

20
推荐指数
3
解决办法
1万
查看次数

检查多个值是否全为false或全部为true

如何检查20个变量是否都为真,或者20个变量都是假的?

如果可能的话,如果没有使用真的长

变量实际上是数组元素:

array('a'=> true,'b'=> true ...)

使它更清楚:

  • 如果数组同时具有true和false值则不返回任何内容
  • 如果数组只有true值,则返回true
  • 如果数组只有false值返回false :)

php conditional boolean-logic boolean conditional-statements

20
推荐指数
6
解决办法
3万
查看次数

为什么ReSharper告诉我这个表达总是如此?

我有以下代码,它将告诉我代码中的其他地方是否使用了某个属性.这背后的想法是验证具有privatesetter 的属性是否可以只读.

这里有多个陷阱,但主要的是在构造函数之外对属性的赋值意味着它不会触发.此外,静态属性可能只在静态构造函数中具有赋值以触发诊断.同样,实例属性只需要一个实例构造函数.

现在,到目前为止我已经考虑了大多数场景,但ReSharper在这段代码中给了我一个警告,我似乎无法弄清楚它的逻辑.以上规范在这段代码中翻译:

var isStaticProperty = propertySymbol.IsStatic;
bool hasInstanceUsage = false;
bool hasStaticUsage = false;

foreach (var identifier in outerClass.DescendantNodes().OfType<IdentifierNameSyntax>())
{
   var memberSymbol = context.SemanticModel.GetSymbolInfo(identifier);
   if (memberSymbol.Symbol.Equals(propertySymbol))
   {
       var constructor = identifier.Ancestors().OfType<ConstructorDeclarationSyntax>()
                                               .FirstOrDefault();
       var isInConstructor = constructor != null;
       var isAssignmentExpression = identifier.Ancestors()
                                               .OfType<AssignmentExpressionSyntax>()
                                               .FirstOrDefault() != null;

       // Skip anything that isn't a setter
       if (!isAssignmentExpression)
       {
           continue;
       }

       // if it is a setter but outside the constructor, we don't report any diagnostic
       if (!isInConstructor)
       { …
Run Code Online (Sandbox Code Playgroud)

c# resharper boolean-logic roslyn

20
推荐指数
3
解决办法
5439
查看次数

标准SQL布尔运算符IS与equals(=)运算符

在SQL的Wikipedia页面上,有一些关于SQL中布尔逻辑的真值表.[1]维基百科页面似乎源于SQL:2003标准.

equals运算符(=)的真值表与SQL:2003草案中的IS运算符不同.

此外,维基百科文章指出"IS NULL"(<null predicate>)是一种特殊情况.

在SQL:2003中,似乎有一个"IS"操作符,它是一个常规运算符,如AND,NOT和OR.但是,<null谓词>仍然存在.

当IS是常规布尔运算符时,为什么<null谓词>存在?它是否确保您可以使用具有非布尔值的"IS NULL"构造而不使用类型coersion?不鼓励使用"= NULL"吗?

SQL:2011标准的工作方式不同吗?

[1]:关于SQL的维基百科

[2]:SQL:2011草案 PDF第335页

[3]:SQL:2003草案 PDF第397页

sql null boolean-logic ansi-sql

19
推荐指数
2
解决办法
9450
查看次数

布尔表达式的对偶和补码之间有什么区别?

它是一回事吗?还是有一点点差异?我只是想确保我不会误解任何事情.

boolean-logic boolean boolean-expression boolean-operations

18
推荐指数
2
解决办法
7万
查看次数

在C#中,'bool = bool!= true'是什么意思?

在我寻找一些问题的帮助时,我遇到了这个:

p.Enabled = p.Enabled != true;
Run Code Online (Sandbox Code Playgroud)

这到底是什么意思?我以前从未见过它,

nb:前一行是 var p = this.PageRepository.GetPage(id);

c# boolean-logic

17
推荐指数
6
解决办法
3086
查看次数

在C++中,为什么真正的&& true || false && false == true?

我想知道是否有人知道编译器解释以下代码的方式:

#include <iostream>
using namespace std;

int main() {
 cout << (true && true || false && false) << endl; // true
}
Run Code Online (Sandbox Code Playgroud)

这是真的,因为&&的优先级高于|| 或因为|| 是一个短路运算符(换句话说,短路运算符是否忽略所有后续表达式,或只是下一个表达式)?

c++ boolean-logic boolean-expression short-circuiting

16
推荐指数
5
解决办法
3万
查看次数