2016-03-27 1 views
0

Я пытаюсь написать функцию в python для преобразования десятичного числа в двоичное число в python с использованием знаковой величины. Функция передается десятичное значение и количество бит. Я не хотел использовать функцию bin(), поскольку я пытался разглядеть арифметику.Sign-Magnitude Binary Equivelent в Python

+0

um ... почему добавляется недостающее 0 глупо? i вы указываете количество бит для его представления, вам нужно добавить дополнительные '0', чтобы совместить длину, нет? –

+0

Это, однако, не должно быть лучшего способа сделать это? – user3277335

+0

Я не мог поблагодарить одну из вершин моей головы, но это похоже на @Blckknght. –

ответ

2

Вы получаете только 15 бит, потому что это все, что вам нужно представлять number (и его знак) в двоичном формате. Ваш цикл while завершается, как только number равен нулю, даже если он еще не исчерпал все бит. Вы можете изменить его, чтобы использовать цикл for на range на основе количества бит.

for _ in range(bits - 1): 
    rem = number % 2 
    s.push(rem) 
    number = number // 2 

Вы также можете использовать divmod здесь, чтобы сделать как разделение, так и модуль в одной операции.