IMP: Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 11: Line 11:
**If {{Parameter|firstValue}} is true then {{Parameter|secondValue}} must also be true.
**If {{Parameter|firstValue}} is true then {{Parameter|secondValue}} must also be true.
**So if {{Parameter|firstValue}} is true, and {{Parameter|secondValue}} false, then the condition is false, otherwise it is true (see table below).
**So if {{Parameter|firstValue}} is true, and {{Parameter|secondValue}} false, then the condition is false, otherwise it is true (see table below).
 
{{LogicalTruthPlugin}}
 
{{LogicalTruthTable}}





Revision as of 17:02, 3 August 2022

The IMP logical operator converts the result of two comparative values and returns a bit result.


Syntax

result = firstValue IMP secondValue


Description

  • Returns a different result from AND, OR or XOR - see truth table below.
  • Evaluates if firstValue implies secondValue.
    • If firstValue is true then secondValue must also be true.
    • So if firstValue is true, and secondValue false, then the condition is false, otherwise it is true (see table below).
               Table 4: The logical operations and its results.

       In this table, A and B are the Expressions to invert or combine.
              Both may be results of former Boolean evaluations.
  ┌────────────────────────────────────────────────────────────────────────┐
  │                           Logical Operations                           │
  ├───────┬───────┬───────┬─────────┬────────┬─────────┬─────────┬─────────┤
  │   ABNOT BA AND BA OR BA XOR BA EQV BA IMP B │
  ├───────┼───────┼───────┼─────────┼────────┼─────────┼─────────┼─────────┤
  │ truetrue  │ false │  true   │ true   │  false  │  true   │  true   │
  ├───────┼───────┼───────┼─────────┼────────┼─────────┼─────────┼─────────┤
  │ truefalse │ true  │  false  │ true   │  true   │  false  │  false  │
  ├───────┼───────┼───────┼─────────┼────────┼─────────┼─────────┼─────────┤
  │ falsetrue  │ false │  false  │ true   │  true   │  false  │  true   │
  ├───────┼───────┼───────┼─────────┼────────┼─────────┼─────────┼─────────┤
  │ falsefalse │ true  │  false  │ false  │  false  │  true   │  true   │
  └───────┴───────┴───────┴─────────┴────────┴─────────┴─────────┴─────────┘
   Note: In most BASIC languages incl. QB64 these are bitwise operations,
         hence the logic is performed for each corresponding bit in both
         operators, where true or false indicates whether a bit is set or
         not set. The outcome of each bit is then placed into the respective
         position to build the bit pattern of the final result value.

   As all Relational Operations return negative one (-1, all bits set) for
    true and zero (0, no bits set) for false, this allows us to use these
    bitwise logical operations to invert or combine any relational checks,
    as the outcome is the same for each bit and so always results into a
            true (-1) or false (0) again for further evaluations.


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link