Difference between revisions of "And"

From Lazarus wiki
Jump to navigationJump to search
(review)
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
{{And}}
 
{{And}}
  
The binary operator <syntaxhighlight lang="pascal" enclose="none">and</syntaxhighlight> performs a logical conjunction.
+
The binary operator {{HL|and}} performs a logical conjunction.
[[FPC]] also does a bitwise <syntaxhighlight lang="pascal" enclose="none">and</syntaxhighlight> when supplied with ordinal types.
+
[[FPC]] also does a bitwise {{HL|and}} when supplied with ordinal types.
  
 
== Boolean operation ==
 
== Boolean operation ==
The operator <syntaxhighlight lang="pascal" enclose="none">and</syntaxhighlight> accepts to two Boolean type values.
+
The operator {{HL|and}} accepts to two Boolean type values.
 
It is the logical conjunction written in classic logic as <math>A \land B</math>.
 
It is the logical conjunction written in classic logic as <math>A \land B</math>.
 
Electrical engineers may write <math>A \times B</math> or <math>A \cdot B</math>, or eliminating the multiplication sign altogether writing <math>AB</math>.
 
Electrical engineers may write <math>A \times B</math> or <math>A \cdot B</math>, or eliminating the multiplication sign altogether writing <math>AB</math>.
 
However, the [[*|asterisk]] has a different meaning in programming.
 
However, the [[*|asterisk]] has a different meaning in programming.
The Boolean <syntaxhighlight lang="pascal" enclose="none">and</syntaxhighlight> evaluates to [[false and true|<syntaxhighlight lang="pascal" enclose="none">true</syntaxhighlight>]] if and only if both operands are <syntaxhighlight lang="pascal" enclose="none">true</syntaxhighlight>.
+
The Boolean {{HL|and}} evaluates to [[false and true|{{HL|true}}]] if and only if both operands are {{HL|true}}.
  
 
{| class="wikitable" style="text-align:center; margin:auto;"
 
{| class="wikitable" style="text-align:center; margin:auto;"
! <syntaxhighlight lang="pascal" enclose="none">A</syntaxhighlight>
+
! {{HL|A}}
! <syntaxhighlight lang="pascal" enclose="none">B</syntaxhighlight>
+
! {{HL|B}}
! <syntaxhighlight lang="pascal" enclose="none">A or B</syntaxhighlight>
+
! {{HL|A and B}}
 
|-
 
|-
| <syntaxhighlight lang="pascal" enclose="none">false</syntaxhighlight>
+
| {{HL|false}}
| <syntaxhighlight lang="pascal" enclose="none">false</syntaxhighlight>
+
| {{HL|false}}
| style="background: #eeeeee" | <syntaxhighlight lang="pascal" enclose="none">false</syntaxhighlight>
+
| style="background: #eeeeee" | {{HL|false}}
 
|-
 
|-
| <syntaxhighlight lang="pascal" enclose="none">false</syntaxhighlight>
+
| {{HL|false}}
| <syntaxhighlight lang="pascal" enclose="none">true</syntaxhighlight>
+
| {{HL|true}}
| style="background: #eeeeee" | <syntaxhighlight lang="pascal" enclose="none">false</syntaxhighlight>
+
| style="background: #eeeeee" | {{HL|false}}
 
|-
 
|-
| <syntaxhighlight lang="pascal" enclose="none">true</syntaxhighlight>
+
| {{HL|true}}
| <syntaxhighlight lang="pascal" enclose="none">false</syntaxhighlight>
+
| {{HL|false}}
| style="background: #eeeeee" | <syntaxhighlight lang="pascal" enclose="none">false</syntaxhighlight>
+
| style="background: #eeeeee" | {{HL|false}}
 
|-
 
|-
| <syntaxhighlight lang="pascal" enclose="none">true</syntaxhighlight>
+
| {{HL|true}}
| <syntaxhighlight lang="pascal" enclose="none">true</syntaxhighlight>
+
| {{HL|true}}
| style="background: #eeeeee" | <syntaxhighlight lang="pascal" enclose="none">true</syntaxhighlight>
+
| style="background: #eeeeee" | {{HL|true}}
 
|+ truth table for logical conjunction
 
|+ truth table for logical conjunction
 
|}
 
|}
Line 39: Line 39:
 
     1010'1100
 
     1010'1100
 
  and 0011'0100
 
  and 0011'0100
  ――――――――――――
+
  ―――――――――――――
 
     0010'0100
 
     0010'0100
  
 
== comparative remarks ==
 
== comparative remarks ==
Depending on the compiler's specific implementation of the data type [[Set|<syntaxhighlight lang="pascal" enclose="none">set</syntaxhighlight>]], the [[symmetric difference|symmetric difference of sets <syntaxhighlight lang="pascal" enclose="none">><</syntaxhighlight>]] virtually does the same as the bitwise <syntaxhighlight lang="pascal" enclose="none">and</syntaxhighlight>.
+
Depending on the compiler's specific implementation of the data type [[Set|{{HL|set}}]], the [[Asterisk|intersection of sets]] virtually does the same as the bitwise {{HL|and}}.
  
== see also ==
+
{{Logical operators}}
* [[Or|<syntaxhighlight lang="pascal" enclose="none">or</syntaxhighlight>]]
+
 
 +
[[Category:Pascal]]
 +
[[Category:Operators]]

Revision as of 21:13, 29 August 2021

Deutsch (de) English (en) español (es) suomi (fi) français (fr) русский (ru)

The binary operator and performs a logical conjunction. FPC also does a bitwise and when supplied with ordinal types.

Boolean operation

The operator and accepts to two Boolean type values. It is the logical conjunction written in classic logic as [math]\displaystyle{ A \land B }[/math]. Electrical engineers may write [math]\displaystyle{ A \times B }[/math] or [math]\displaystyle{ A \cdot B }[/math], or eliminating the multiplication sign altogether writing [math]\displaystyle{ AB }[/math]. However, the asterisk has a different meaning in programming. The Boolean and evaluates to true if and only if both operands are true.

A B A and B
false false false
false true false
true false false
true true true
truth table for logical conjunction

Bitwise operation

FPC also defines a bitwise and. Taking two ordinal operands logical and is calculated bit by bit:

    1010'1100
and 0011'0100
―――――――――――――
    0010'0100

comparative remarks

Depending on the compiler's specific implementation of the data type set, the intersection of sets virtually does the same as the bitwise and.


navigation bar: Pascal logical operators
operators

and • or • not • xor
shl • shr
and_then (N/A)• or_else (N/A)

see also

{$boolEval} • Reference: § “boolean operators” • Reference: § “logical operators”