TheAlgorithms-Python

Форк
0
/
binary_and_operator.py 
52 строки · 1.4 Кб
1
# https://www.tutorialspoint.com/python3/bitwise_operators_example.htm
2

3

4
def binary_and(a: int, b: int) -> str:
5
    """
6
    Take in 2 integers, convert them to binary,
7
    return a binary number that is the
8
    result of a binary and operation on the integers provided.
9

10
    >>> binary_and(25, 32)
11
    '0b000000'
12
    >>> binary_and(37, 50)
13
    '0b100000'
14
    >>> binary_and(21, 30)
15
    '0b10100'
16
    >>> binary_and(58, 73)
17
    '0b0001000'
18
    >>> binary_and(0, 255)
19
    '0b00000000'
20
    >>> binary_and(256, 256)
21
    '0b100000000'
22
    >>> binary_and(0, -1)
23
    Traceback (most recent call last):
24
        ...
25
    ValueError: the value of both inputs must be positive
26
    >>> binary_and(0, 1.1)
27
    Traceback (most recent call last):
28
        ...
29
    TypeError: 'float' object cannot be interpreted as an integer
30
    >>> binary_and("0", "1")
31
    Traceback (most recent call last):
32
        ...
33
    TypeError: '<' not supported between instances of 'str' and 'int'
34
    """
35
    if a < 0 or b < 0:
36
        raise ValueError("the value of both inputs must be positive")
37

38
    a_binary = str(bin(a))[2:]  # remove the leading "0b"
39
    b_binary = str(bin(b))[2:]  # remove the leading "0b"
40

41
    max_len = max(len(a_binary), len(b_binary))
42

43
    return "0b" + "".join(
44
        str(int(char_a == "1" and char_b == "1"))
45
        for char_a, char_b in zip(a_binary.zfill(max_len), b_binary.zfill(max_len))
46
    )
47

48

49
if __name__ == "__main__":
50
    import doctest
51

52
    doctest.testmod()
53

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.