2015-02-20 3 views
2
>>> a = -2147458560 
>>> bin(a) 
'-0b1111111111111111001111000000000' 

Мое намерение состоит в том, чтобы манипулировать a 32-битовым двоичным сигналом и вернуть его. Правильное преобразование для -2147458560 будет '0b10000000000000000110001000000000'; как я могу это достичь?Отрицательное целое число до 32-битного двоичного кода

ответ

11

Побитовый И (&) с 0xffffffff (2 - 1) первым:

>>> a = -2147458560 
>>> bin(a & 0xffffffff) 
'0b10000000000000000110001000000000' 

>>> format(a & 0xffffffff, '32b') 
'10000000000000000110001000000000' 
>>> '{:32b}'.format(a & 0xffffffff) 
'10000000000000000110001000000000' 
+0

, а затем я должен преобразовать его обратно в, чтобы вернуть его. – Nikos

+0

@ Никос, 'int'? Просто 'a & 0xffffffff' – falsetru

+3

@Nikos, Не могли бы вы принять ответ, если это решило вашу проблему? Или, пожалуйста, дайте мне отзыв, чтобы я мог улучшить ответ. – falsetru

Смежные вопросы