How to find the position of the first set bit (1-bit) of a number in Pascal

1 Answer

0 votes
program FirstSetBitPosition;

// Function to find the position of the first set bit 
function FindFirstSetBitPosition(num: Integer): Integer;
begin
  { Edge case: If the number is 0, there are no set bits }
  if num = 0 then
    FindFirstSetBitPosition := 0  { Return 0 to indicate no set bit }
  else
    (*
      num AND -num isolates the lowest set bit.
      Ln(...) / Ln(2) gives the zero-based index of that bit.
    *)
    FindFirstSetBitPosition := Trunc(Ln(num AND (-num)) / Ln(2)) + 1;
end;

var
  num: Integer;
  position: Integer;

begin
  num := 4224;  { Binary: 0001 0000 1000 0000 }

  // Find and display the position of the first set bit 
  position := FindFirstSetBitPosition(num);
  if position = 0 then
    writeln('The number has no set bits (it''s 0).')
  else
    writeln('The position of the first set bit is: ', position);
end.




(*
run:

The position of the first set bit is: 7

*)

 



answered Sep 4, 2025 by avibootz
...