chore: Merge pull request #777 from indremak/add-next-power-of-two-algorithm

Add next power of two algorithm
This commit is contained in:
Rak Laptudirm
2021-10-20 15:31:36 +05:30
committed by GitHub
2 changed files with 36 additions and 0 deletions

View File

@ -0,0 +1,18 @@
/**
*
* This script will find next power of two
* of given number.
* More about it:
* https://www.techiedelight.com/round-next-highest-power-2/
*
*/
export const nextPowerOfTwo = (n) => {
if (n > 0 && (n & (n - 1)) === 0) return n
let result = 1
while (n > 0) {
result = result << 1
n = n >> 1
}
return result
}

View File

@ -0,0 +1,18 @@
import { nextPowerOfTwo } from '../NextPowerOfTwo'
describe('NextPowerOfTwo', () => {
it.each`
input | result
${0} | ${1}
${1} | ${1}
${2} | ${2}
${3} | ${4}
${5} | ${8}
${125} | ${128}
${1024} | ${1024}
${10000} | ${16384}
`('returns $result when is given $input', ({ input, result }) => {
const res = nextPowerOfTwo(input)
expect(res).toBe(result)
})
})