Дополнение Two в Python

Существует ли созданный в функции в Python, который преобразует двоичную строку, например, '111111111111', к дополнительному целому числу two-1?

57
задан 23 October 2014 в 11:59

2 ответа

Можно использовать bit_length () функция для преобразования чисел в дополнение их two:

def twos_complement(j):
   return j-(1<<(j.bit_length()))

In [1]: twos_complement(0b111111111111)                                                                                                                                                             
Out[1]: -1
0
ответ дан 1 November 2019 в 16:19

Вот версия для преобразования каждого значения в шестнадцатеричной строке к, он - дополнительная версия two.


In [5159]: twoscomplement('f0079debdd9abe0fdb8adca9dbc89a807b707f')                                                                                                 
Out[5159]: '10097325337652013586346735487680959091'


def twoscomplement(hm): 
   twoscomplement='' 
   for x in range(0,len(hm)): 
       value = int(hm[x],16) 
       if value % 2 == 1: 
         twoscomplement+=hex(value ^ 14)[2:] 
       else: 
         twoscomplement+=hex(((value-1)^15)&0xf)[2:] 
   return twoscomplement            
0
ответ дан 1 November 2019 в 16:19

Другие вопросы по тегам:

Похожие вопросы: