Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bit_count, digit = int(input()), int(input())
- bin_dig = bin(digit)
- bin_len = digit.bit_length()
- if bin_len == 0:
- bin_len = 1
- if (digit < 0 and abs(digit) > 2**(bit_count-1)) or (digit > 0 and digit > (2**(bit_count-1))-1):
- print("impossible impossible impossible")
- elif abs(digit) > 2**(bit_count-1)-1:
- print("impossible impossible", bin(1<<bit_count-1)[2::])
- else:
- #прямой код
- direct_code = ""
- if digit >= 0:
- direct_code = (bit_count-bin_len)*"0" + bin_dig[-bin_len::]
- else:
- direct_code = bin((1<<bit_count-1)|abs(digit))[2::]
- print(direct_code, end = " ")
- if digit < 0:
- mask = 2**bit_count-1
- #обратный код
- invert_dig = (abs(digit)^(2**(bit_count-1)-1))&mask
- reverse_code = bin((1<<bit_count-1)|invert_dig)[2::]
- print(reverse_code, end = " ")
- #дополнительный код
- additional_code = bin((1<<bit_count-1)|(invert_dig+1))[2::]
- print(additional_code)
- else:
- print(direct_code, direct_code)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement