How to round a number to the nearest power of 2 in Pascal

1 Answer

0 votes
program NearestPowerOf2;

function RoundToNearestPowerOf2(n: Word): Word;
var
  prevPower, nextPower: Word;
begin
  if n = 0 then
    RoundToNearestPowerOf2 := 0
  else
  begin
    prevPower := 1;
    while prevPower * 2 <= n do
      prevPower := prevPower * 2;

    nextPower := prevPower * 2;

    if (n - prevPower) < (nextPower - n) then
      RoundToNearestPowerOf2 := prevPower
    else
      RoundToNearestPowerOf2 := nextPower;
  end;
end;

var
  num, result: Word;

begin
  num := 37;
  
  result := RoundToNearestPowerOf2(num);
  
  writeln('Nearest power of 2: ', result);
end.




(*
run:

Nearest power of 2: 32

*)

 



answered Oct 31, 2025 by avibootz
...