Как определить, является ли число степенью двойки на javascript с помощью цикла while?
для чисел до 2^31 можно и без цикла

const isPower2 = n => (n & (n-1)) === 0

вариант для длинной арифметики
const isPower2b = n => (n & (n - 1n)) === 0n;

alert(isPower2b(147573952589676412928n));
(8).toString(2).replace(/0/g, '') == 1;  // true степень двойки
(17).toString(2).replace(/0/g, '') == 1; // false
(32).toString(2).replace(/0/g, '') == 1; // true степень двойки

Поясню, пожалуй. В двоичном представлении чисел, являющихся степенью двойки лишь одна единица. Это и проверяем.