Advertisement
Guest User

Untitled

a guest
Nov 13th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.07 KB | None | 0 0
  1. bit_count, digit = int(input()), int(input())
  2. bin_dig = bin(digit)
  3. bin_len = digit.bit_length()
  4. if bin_len == 0:
  5.     bin_len = 1
  6. if (digit < 0 and abs(digit) > 2**(bit_count-1)) or (digit > 0 and digit > (2**(bit_count-1))-1):
  7.     print("impossible impossible impossible")    
  8. elif abs(digit) > 2**(bit_count-1)-1:
  9.     print("impossible impossible", bin(1<<bit_count-1)[2::])
  10. else:
  11.     #прямой код
  12.     direct_code = ""
  13.     if digit >= 0:
  14.         direct_code = (bit_count-bin_len)*"0" + bin_dig[-bin_len::]
  15.     else:
  16.         direct_code = bin((1<<bit_count-1)|abs(digit))[2::]
  17.     print(direct_code, end = " ")
  18.  
  19.     if digit < 0:
  20.         mask = 2**bit_count-1
  21.         #обратный код
  22.         invert_dig = (abs(digit)^(2**(bit_count-1)-1))&mask
  23.         reverse_code = bin((1<<bit_count-1)|invert_dig)[2::]
  24.         print(reverse_code, end = " ")
  25.         #дополнительный код
  26.         additional_code = bin((1<<bit_count-1)|(invert_dig+1))[2::]
  27.         print(additional_code)
  28.     else:
  29.         print(direct_code, direct_code)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement