Updated the code and did the required changes

This commit is contained in:
Aayushi-Mittal
2021-10-08 21:20:21 +05:30
parent e978f4365d
commit 7ce688b9db
2 changed files with 24 additions and 8 deletions

View File

@ -4,14 +4,25 @@
This script will check whether the given
number is a power of two or not.
A number will be a power of two if only one bit is set and rest are unset.
This is true for all the cases except 01 because (2^0 = 1) which is not a power of 2.
For eg: 10 (2^1 = 2), 100 (2^2 = 4), 10000 (2^4 = 16)
Reference Link: https://www.hackerearth.com/practice/notes/round-a-number-to-the-next-power-of-2/
If we will subtract 1 from a number that is a power of 2 we will get it's 1's complement.
And we know that 1's complement is just opp. of that number.
So, (n & (n-1)) will be 0.
For eg: (1000 & (1000-1))
1 0 0 0 // Original Number (8)
0 1 1 1 // After Subtracting 1 (8-1 = 7)
_______
0 0 0 0 // will become 0
*/
export const IsPowerOfTwo = (n) => {
if ((n&(n-1))==0 && n!=0)
return true;
else
return false;
if (n != 0 && (n & (n - 1)) == 0) return true
else return false
}
// console.log(IsPowerOfTwo(0));

View File

@ -1,7 +1,12 @@
import {IsPowerOfTwo} from '../IsPowerOfTwo'
test('Check if 0 is a power of 2 or not:', () => {
const res = IsPowerOfTwo(1, 0)
const res = IsPowerOfTwo(0)
expect(res).toBe(false)
})
test('Check if 0 is a power of 2 or not:', () => {
const res = IsPowerOfTwo(1)
expect(res).toBe(false)
})