Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 060fd8e

Browse files
mr-contiMaximSmolskiy
andauthored
Fix reverse_bits.py: correct 32-bit reversal and improve docstrings (#12924)
* Fix reverse_bits.py (#12868) * Update reverse_bits.py * Update reverse_bits.py * Update reverse_bits.py * Update reverse_bits.py * Update reverse_bits.py --------- Co-authored-by: Maxim Smolskiy <mithridatus@mail.ru>
1 parent 9ddb027 commit 060fd8e

File tree

1 file changed

+31
-31
lines changed

1 file changed

+31
-31
lines changed

‎bit_manipulation/reverse_bits.py

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,83 @@
11
def get_reverse_bit_string(number: int) -> str:
22
"""
3-
return the bit string of an integer
3+
Return the reverse bit string of a 32 bit integer
44
55
>>> get_reverse_bit_string(9)
66
'10010000000000000000000000000000'
77
>>> get_reverse_bit_string(43)
88
'11010100000000000000000000000000'
99
>>> get_reverse_bit_string(2873)
1010
'10011100110100000000000000000000'
11+
>>> get_reverse_bit_string(2550136832)
12+
'00000000000000000000000000011001'
1113
>>> get_reverse_bit_string("this is not a number")
1214
Traceback (most recent call last):
1315
...
14-
TypeError: operation can not be conducted on a object of type str
16+
TypeError: operation can not be conducted on an object of type str
1517
"""
1618
if not isinstance(number, int):
1719
msg = (
18-
"operation can not be conducted on a object of type "
20+
"operation can not be conducted on an object of type "
1921
f"{type(number).__name__}"
2022
)
2123
raise TypeError(msg)
2224
bit_string = ""
2325
for _ in range(32):
2426
bit_string += str(number % 2)
25-
number =number>> 1
27+
number >>= 1
2628
return bit_string
2729

2830

29-
def reverse_bit(number: int) -> str:
31+
def reverse_bit(number: int) -> int:
3032
"""
31-
Take in an 32 bit integer, reverse its bits,
32-
return a string of reverse bits
33-
34-
result of a reverse_bit and operation on the integer provided.
33+
Take in a 32 bit integer, reverse its bits, return a 32 bit integer result
3534
3635
>>> reverse_bit(25)
37-
'00000000000000000000000000011001'
36+
2550136832
3837
>>> reverse_bit(37)
39-
'00000000000000000000000000100101'
38+
2751463424
4039
>>> reverse_bit(21)
41-
'00000000000000000000000000010101'
40+
2818572288
4241
>>> reverse_bit(58)
43-
'00000000000000000000000000111010'
42+
1543503872
4443
>>> reverse_bit(0)
45-
'00000000000000000000000000000000'
44+
0
4645
>>> reverse_bit(256)
47-
'00000000000000000000000100000000'
46+
8388608
47+
>>> reverse_bit(2550136832)
48+
25
4849
>>> reverse_bit(-1)
4950
Traceback (most recent call last):
5051
...
51-
ValueError: the value of input must be positive
52+
ValueError: The value of input must be non-negative
5253
5354
>>> reverse_bit(1.1)
5455
Traceback (most recent call last):
5556
...
56-
TypeError: Input value must be a 'int' type
57+
TypeError: Input value must be an 'int' type
5758
5859
>>> reverse_bit("0")
5960
Traceback (most recent call last):
6061
...
61-
TypeError: '<' not supported between instances of 'str' and 'int'
62+
TypeError: Input value must be an 'int' type
6263
"""
64+
if not isinstance(number, int):
65+
raise TypeError("Input value must be an 'int' type")
6366
if number < 0:
64-
raise ValueError("the value of input must be positive")
65-
elif isinstance(number, float):
66-
raise TypeError("Input value must be a 'int' type")
67-
elif isinstance(number, str):
68-
raise TypeError("'<' not supported between instances of 'str' and 'int'")
67+
raise ValueError("The value of input must be non-negative")
68+
6969
result = 0
70-
# iterator over [1 to 32],since we are dealing with 32 bit integer
71-
for _ in range(1, 33):
70+
# iterator over [0 to 31], since we are dealing with a 32 bit integer
71+
for _ in range(32):
7272
# left shift the bits by unity
73-
result =result<< 1
73+
result <<= 1
7474
# get the end bit
75-
end_bit = number %2
75+
end_bit = number &1
7676
# right shift the bits by unity
77-
number =number>> 1
78-
# add that bit to our ans
79-
result =result| end_bit
80-
return get_reverse_bit_string(result)
77+
number >>= 1
78+
# add that bit to our answer
79+
result |= end_bit
80+
return result
8181

8282

8383
if __name__ == "__main__":

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /