Pythonで1の補数を生成する簡単な方法はありますか?
たとえば、16 進値 を取得する場合、0x9E
それを に変換する必要があり0x61
ます。
バイナリ 1 を 0 に、0 を 1 に交換する必要があります。これはシンプルであるべきだと感じます。
Pythonで1の補数を生成する簡単な方法はありますか?
たとえば、16 進値 を取得する場合、0x9E
それを に変換する必要があり0x61
ます。
バイナリ 1 を 0 に、0 を 1 に交換する必要があります。これはシンプルであるべきだと感じます。
0xFF に対してXOR 演算子^
を使用するだけです。
>>> hex(0x9E ^ 0xFF)
'0x61'
1 バイトより大きい値を扱う必要がある場合は、値のint.bit_length()
メソッドからマスクを作成できます。
>>> value = 0x9E
>>> mask = (1 << value.bit_length()) - 1
>>> hex(value ^ mask)
'0x61'
>>> value = 0x9E9E
>>> mask = (1 << value.bit_length()) - 1
>>> hex(value ^ mask)
'0x6161'
はぁ。bin()
Pythonが文字列を返すことがわかりました。
これで楽しい時間を過ごすことができます!
for x in numbers: # numbers is a list of int
b = bin(x)
#print b # e.g. String 0b1011100101
b = b.replace('0', 'x')
b = b.replace('1', '0')
b = b.replace('x', '1')
b = b.replace('1b', '0b')
#print b # String 0b0100011010
print int(b, 2) # the decimal representation