我为该任务编写了代码:
Напишите программу, которая по данным числам A и n записывает
представление числа A в n-разрядном двоичном дополнительном коде.
Входные данные
Первая строка входных данных содержит число A, вторая строка –– число
n, при этом 2 ≤ n ≤ 16, −2^n−1 ≤ A ≤ (2^n−1)−1 .
Выходные данные
Программа должна вывести строку из n символов, содержащих запись числа
A в n-разрядном двоичном дополнительном коде, первый символ –– старший
знаковый разряд.
Примеры
входные данные
3
8
выходные данные
00000011
входные данные
57
8
выходные данные
00111001
我的代码:
def binar(x, n):
ans=""
while x>0:
ans+=str(x%2)
x//=2
ans="0"*(n-len(ans))+(ans[::-1])
return ans
A=int(input())
n=int(input())
print(binar(A, n))
但在检查系统的一些测试中(它们是未知的),它给出了错误的答案,请帮助!
写起来比较容易...
您不太可能接受这个答案。使用内置的Python工具,问题可以这样解决:
你不计算负数。阅读有关其他代码的信息,例如在Wikipedia上。如果您坚持自己的风格,那么您应该添加一个函数来转换负数:
值得注意的是,对于正数,可以使用 f-string 进行转换:
或 bin() 函数: