From Lazarus wiki
Jump to navigationJump to search

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

Back to Reserved words.


The reserved word Shift left (shl) performs a left bit-shift operation, shifting the value by the amount of bits specified as an argument (opposite of shr).


Command is: 00000100 shl 2 (shift left 2 bits)
Action is:  00000100 <- 00 (00 gets added to the right of the value; left 00 "disappears")
Result is:  00010000

Clear a bit

function ClearBit( const aValue, aBitNumber : integer ) : integer;
// sanity check supplied value
  if (aBitNumber <0) or  (aBitNumber >15) then
      result :=0
// value ok
     result := aValue and not( 1 shl aBitNumber );

If you call ClearBit(%1111,1), then you get %1101 (The binary number %1111 is 15 and %1101 = 13).

If you call ClearBit(13,2), then you get 9 (9 = %1001).

In this case, bits are numbered right to left from 0 to 15, bit 0 being the ones bit and bit 15 being the sign bit.

navigation bar: Pascal logical operators

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

see also

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