How to check if an integer contains an even or odd number of bits set in Pascal

1 Answer

0 votes
program EvenOrOddBitsSetProgram;

function hasEvenOrOddBitsSet(n: Int32): Integer;
begin
  (*
    DWORD(n)	Converts n to an unsigned 32-bit integer
    PopCnt(...)	Returns the number of set bits (1s) in the binary form of the value
    Odd(...)	Returns True if the number is odd, otherwise False
    Ord(...)	Converts the boolean result (True or False) to its ordinal value:
    Ord(True) = 1, Ord(False) = 0
  *)
  hasEvenOrOddBitsSet := Ord(Odd(PopCnt(DWORD(n))));
end;

var
  i: Int32;
begin
  i := 42; // 0010 1010
  
  writeln('0 = even number of bits set');
  writeln('1 = odd number of bits set');
  writeln('result = ', hasEvenOrOddBitsSet(i));
end.




(*
run:
  
0 = even number of bits set
1 = odd number of bits set
result = 1
  
*)

 



answered Jul 27, 2025 by avibootz
...