Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fixed formatting
  • Loading branch information
Leyza committed Dec 27, 2020
commit 919af320fdaf3ef67873697d3ccd883383a3ca9f
16 changes: 11 additions & 5 deletions bit_manipulation/binary_shifts.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def logical_right_shift(number: int, shift_amount: int) -> str:
binary_number = str(bin(number))[2:]
if shift_amount >= len(binary_number):
return "0b0"
shifted_binary_number = binary_number[:len(binary_number) - shift_amount]
shifted_binary_number = binary_number[: len(binary_number) - shift_amount]
return "0b" + shifted_binary_number


Expand Down Expand Up @@ -84,13 +84,19 @@ def arithmetic_right_shift(number: int, shift_amount: int) -> str:
else: # Get binary (2's complement) representation of negative number
binary_number_length = len(bin(number)[3:]) # Find 2's complement of number
binary_number = bin(abs(number) - (1 << binary_number_length))[3:]
binary_number = ("1" + "0" * (binary_number_length - len(binary_number)) +
binary_number) if number < 0 else "0"
binary_number = (
("1" + "0" * (binary_number_length - len(binary_number)) + binary_number)
if number < 0
else "0"
)

if shift_amount >= len(binary_number):
return "0b" + binary_number[0] * len(binary_number)
return "0b" + binary_number[0] * shift_amount + \
binary_number[:len(binary_number) - shift_amount]
return (
"0b"
+ binary_number[0] * shift_amount
+ binary_number[:len(binary_number) - shift_amount]
)


if __name__ == "__main__":
Expand Down
12 changes: 9 additions & 3 deletions bit_manipulation/binary_twos_complement.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,15 @@ def twos_complement(number: int) -> str:
raise ValueError("input must be a negative integer")
binary_number_length = len(bin(number)[3:])
twos_complement_number = bin(abs(number) - (1 << binary_number_length))[3:]
twos_complement_number = ("1" + "0" *
(binary_number_length - len(twos_complement_number)) +
twos_complement_number) if number < 0 else "0"
twos_complement_number = (
(
"1"
+ "0" * (binary_number_length - len(twos_complement_number))
+ twos_complement_number
)
if number < 0
else "0"
)
return "0b" + twos_complement_number


Expand Down