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. Return True if this number is power of 4 or False otherwise.  powerof40 Traceback most recent call last: ... ValueError: number must be positive  powerof41 True  powerof42 False  powerof44 True  powerof46 False  powerof48 False  powerof417 False  powerof464 True  powerof41 Traceback most recent call last: ... ValueError: number must be positive  powerof41.2 Traceback most recent call last: ... TypeError: number must be an integer
def 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

    """
    if not isinstance(number, int):
        raise TypeError("number must be an integer")
    if number <= 0:
        raise ValueError("number must be positive")
    if number & (number - 1) == 0:
        c = 0
        while number:
            c += 1
            number >>= 1
        return c % 2 == 1
    else:
        return False


if __name__ == "__main__":
    import doctest

    doctest.testmod()
