Я пытаюсь написать функцию в python для преобразования десятичного числа в двоичное число в python с использованием знаковой величины. Функция передается десятичное значение и количество бит. Я не хотел использовать функцию bin()
, поскольку я пытался разглядеть арифметику.Sign-Magnitude Binary Equivelent в Python
0
A
ответ
2
Вы получаете только 15 бит, потому что это все, что вам нужно представлять number
(и его знак) в двоичном формате. Ваш цикл while
завершается, как только number
равен нулю, даже если он еще не исчерпал все бит. Вы можете изменить его, чтобы использовать цикл for
на range
на основе количества бит.
for _ in range(bits - 1):
rem = number % 2
s.push(rem)
number = number // 2
Вы также можете использовать divmod
здесь, чтобы сделать как разделение, так и модуль в одной операции.
um ... почему добавляется недостающее 0 глупо? i вы указываете количество бит для его представления, вам нужно добавить дополнительные '0', чтобы совместить длину, нет? –
Это, однако, не должно быть лучшего способа сделать это? – user3277335
Я не мог поблагодарить одну из вершин моей головы, но это похоже на @Blckknght. –