Skip to content

Commit fba99a3

Browse files
Merge pull request #1 from xcodz-dot/reverse-bit
fix all the issues with pre-commit and algorithms-keeper bot
2 parents dc4c3a7 + 7566e75 commit fba99a3

File tree

1 file changed

+35
-17
lines changed

1 file changed

+35
-17
lines changed

bit_manipulation/reverse_bits.py

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,31 @@
1-
def get_reverse_bit_string(bn : int) -> str:
2-
""" return the bit string of an interger
1+
def get_reverse_bit_string(number: int) -> str:
32
"""
3+
return the bit string of an integer
4+
5+
>>> get_reverse_bit_string(9)
6+
'10010000000000000000000000000000'
7+
>>> get_reverse_bit_string(43)
8+
'11010100000000000000000000000000'
9+
>>> get_reverse_bit_string(2873)
10+
'10011100110100000000000000000000'
11+
>>> get_reverse_bit_string("this is not a number")
12+
Traceback (most recent call last):
13+
...
14+
TypeError: operation can not be conducted on a object of type str
15+
"""
16+
if not isinstance(number, int):
17+
raise TypeError(
18+
"operation can not be conducted on a object of type "
19+
f"{type(number).__name__}"
20+
)
421
bit_string = ""
5-
for trk in range(0, 32):
6-
bit_string += str(bn % 2)
7-
bn = bn >> 1
22+
for _ in range(0, 32):
23+
bit_string += str(number % 2)
24+
number = number >> 1
825
return bit_string
926

1027

11-
def reverse_bit(n: int) -> str:
28+
def reverse_bit(number: int) -> str:
1229
"""
1330
Take in an 32 bit integer, reverse its bits,
1431
return a string of reverse bits
@@ -42,26 +59,27 @@ def reverse_bit(n: int) -> str:
4259
...
4360
TypeError: '<' not supported between instances of 'str' and 'int'
4461
"""
45-
if n < 0:
62+
if number < 0:
4663
raise ValueError("the value of input must be positive")
47-
elif isinstance(n, float):
64+
elif isinstance(number, float):
4865
raise TypeError("Input value must be a 'int' type")
49-
elif isinstance(n, str):
66+
elif isinstance(number, str):
5067
raise TypeError("'<' not supported between instances of 'str' and 'int'")
51-
ans = 0
68+
result = 0
5269
# iterator over [1 to 32],since we are dealing with 32 bit integer
53-
for i in range(1, 33):
70+
for _ in range(1, 33):
5471
# left shift the bits by unity
55-
ans = ans << 1
72+
result = result << 1
5673
# get the end bit
57-
k = n % 2
58-
# right shif the bits by unity
59-
n = n >> 1
74+
end_bit = number % 2
75+
# right shift the bits by unity
76+
number = number >> 1
6077
# add that bit to our ans
61-
ans = ans | k
62-
return get_reverse_bit_string(ans)
78+
result = result | end_bit
79+
return get_reverse_bit_string(result)
6380

6481

6582
if __name__ == "__main__":
6683
import doctest
84+
6785
doctest.testmod()

0 commit comments

Comments
 (0)