Difference between revisions of "Xor"

From Free Pascal wiki
Jump to navigationJump to search
(add footer, cat)
(9 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 +
{{Xor}}
 +
Back to [[Reserved words]].
 +
 +
The '''xor''' [[Operator|{{HL|operator}}]] compares two [[Boolean|{{HL|boolean}}]]  values, and returns true if and only if one of them is true.
 +
 +
= Boolean operation =
 +
 
Exclusive or ('''xor''') results in a value of [[True|true]] if and only if exactly one of the operands has a value of true.
 
Exclusive or ('''xor''') results in a value of [[True|true]] if and only if exactly one of the operands has a value of true.
  
 +
== Truth table ==
 +
 +
{| class="wikitable"
 +
|-
 +
! A !! B !! A xor B
 +
|-
 +
|   false  ||   false  
 +
|style="background: #eeeeee" |   false
 +
|-
 +
|   false ||   true
 +
|style="background: #eeeeee" |   true
 +
|-
 +
|   true ||   false
 +
|style="background: #eeeeee" |   true
 +
|-
 +
|   true ||   true
 +
|style="background: #eeeeee" |   false
 +
|}
  
 
= Bitwise operation =
 
= Bitwise operation =
Line 8: Line 33:
 
== Toggle a bit ==
 
== Toggle a bit ==
  
<delphi>
+
<syntaxhighlight lang=pascal>
 
function ToggleBit(const AValue,ABitNumber:integer):integer;
 
function ToggleBit(const AValue,ABitNumber:integer):integer;
 
begin
 
begin
 
   result := AValue xor 1 shl ABitNumber;
 
   result := AValue xor 1 shl ABitNumber;
 
end;
 
end;
</delphi>
+
</syntaxhighlight>
  
 
If you call ToggleBit(11,0) then get 10. If you call ToggleBit(10,2) then get 14.
 
If you call ToggleBit(11,0) then get 10. If you call ToggleBit(10,2) then get 14.
  
=== Read more ===
+
{{Logical operators}}
* [[Shl]]
+
* [[Variable_parameter#XOR swap| XOR swap]]
 
* [[Const]]
 
* [[Const]]
 
* [[Function]]
 
* [[Function]]
 
* [[Integer]]
 
* [[Integer]]
 +
 +
[[Category:Code]]
 +
[[Category:Operators]]

Revision as of 23:45, 16 October 2020

Deutsch (de) English (en) suomi (fi) français (fr) русский (ru)
Back to Reserved words.

The xor operator compares two boolean values, and returns true if and only if one of them is true.

Boolean operation

Exclusive or (xor) results in a value of true if and only if exactly one of the operands has a value of true.

Truth table

A B A xor B
  false     false     false
  false   true   true
  true   false   true
  true   true   false

Bitwise operation

Bitwise xor sets the bit to 1 where the corresponding bits in its operands are different, and to 0 if they are the same.

Toggle a bit

function ToggleBit(const AValue,ABitNumber:integer):integer;
begin
   result := AValue xor 1 shl ABitNumber;
end;

If you call ToggleBit(11,0) then get 10. If you call ToggleBit(10,2) then get 14.


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”