Skip to content

Instantly share code, notes, and snippets.

@andrescabana86
Last active April 23, 2018 00:17
Show Gist options
  • Save andrescabana86/deaacdafabcdc9740bb31e27e94f0287 to your computer and use it in GitHub Desktop.
Save andrescabana86/deaacdafabcdc9740bb31e27e94f0287 to your computer and use it in GitHub Desktop.
This function returns "true" if the number is power of 2, if not, returns the previous number power of two.
function checkIfIsPowerOfTwoOrReturnPrevious(number) {
var previousNumber = number
number = number | (number >> 1);
number = number | (number >> 2);
number = number | (number >> 4);
number = number | (number >> 8);
number = number | (number >> 16);
var result = number - (number >> 1);
if (result === previousNumber) {
result = true
}
return result;
}
checkIfIsPowerOfTwoOrReturnPrevious(1024) // true is power of 2
checkIfIsPowerOfTwoOrReturnPrevious(46192) // 32768 prev power of 2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment