QB64.com

QB64 is a modern extended BASIC programming language that retains QBasic/QuickBASIC 4.5 compatibility and compiles native binaries for Windows, Linux, and macOS.

The logical AND numerical operator compares two values in respect of their bits. If both bits at a certain position in both values are set, then that bit position is set in the result.

Syntax

result = firstvalue AND secondvalue

Description

The results of the bitwise logical operations, where A and B are operands, and T and F indicate that a bit is set or not set:

A B   NOT B AND B OR B XOR B EQV B IMP B
T T   F T T F T T
T F   T F T T F F
F T   F F T T F T
F F   T F F F T T

Relational Operations return negative one (-1, all bits set) and zero (0, no bits set) for true and false, respectively. This allows relational tests to be inverted and combined using the bitwise logical operations.

Example(s)

Example 1:


         101
         AND
         011
        -----
         001

The 101 bit pattern equals 5 and the 011 bit pattern equals 3, it returns the bit pattern 001 which equals 1. Only the Least Significant Bits (LSB) match. So decimal values 5 AND 3 = 1.

Example 2:


      11111011
        AND
      11101111
     ----------
      11101011

Both bits have to be set for the resulting bit to be set. You can use the AND operator to get one byte of a two byte integer this way:

firstbyte = twobyteint AND 255

Since 255 is 11111111 in binary, it will represent the first byte completely when compared with AND.

To find the second (HI) byte’s decimal value of two byte INTEGERs use: secondbyte = twobyteint \ 256

Finding the binary bits on in an INTEGER value.


DO
  INPUT "Enter Integer value from -32768 to 32767 (Enter quits): ", INTvalue& 
  IF INTvalue& < -32768 OR INTvalue& > 32767 OR INTval& = 0 THEN EXIT DO
  FOR exponent = 15 TO 0 STEP -1
    IF (INTvalue& AND 2 ^ exponent) THEN PRINT "1"; ELSE PRINT "0";
  NEXT
  PRINT " "
LOOP UNTIL INTvalue& = 0 'zero entry quits


Example output for 6055.


0001011110100111

Note: The value of 32767 sets 15 bits. -1 sets all 16 bits. Negative values will all have the highest bit set. Use LONG variables for input values to prevent overflow errors.

See Also