bit_manipulation.power_of_4

Task: Given a positive int number. Return True if this number is power of 4 or False otherwise.

Implementation notes: Use bit manipulation. For example if the number is the power of 2 it’s bits representation: n = 0..100..00 n - 1 = 0..011..11

n & (n - 1) - no intersections = 0 If the number is a power of 4 then it should be a power of 2 and the set bit should be at an odd position.

Functions

power_of_4(→ bool)

Return True if this number is power of 4 or False otherwise.

Module Contents

bit_manipulation.power_of_4.power_of_4(number: int) bool

Return True if this number is power of 4 or False otherwise.

>>> power_of_4(0)
Traceback (most recent call last):
    ...
ValueError: number must be positive
>>> power_of_4(1)
True
>>> power_of_4(2)
False
>>> power_of_4(4)
True
>>> power_of_4(6)
False
>>> power_of_4(8)
False
>>> power_of_4(17)
False
>>> power_of_4(64)
True
>>> power_of_4(-1)
Traceback (most recent call last):
    ...
ValueError: number must be positive
>>> power_of_4(1.2)
Traceback (most recent call last):
    ...
TypeError: number must be an integer