2016-09-09 3 views
-1

Я хочу манипулировать двоичным числом непосредственно в python. Например, у меня есть десятичное число 18. Я был в состоянии преобразовать число в двоичный с помощьюИспользование битов непосредственно в python

seed =bin(18) 

, но проблема в том, я хочу XOR некоторые из его bits.If я эти семена с помощью индексации массива я не могу XOR их, как это имеет тип 'str'. Как можно просто преобразовать десятичное число в двоичный файл и играть со своими битами?

Заранее спасибо

+2

Номера, как правило, уже представлены в двоичном формате. Они выводятся на экран в виде десятичных изображений. Используйте «побитовые операторы» Python (https://wiki.python.org/moin/BitwiseOperators) на объектах 'int' для управления битами. –

+0

Работайте с '18' вместо' bin (18) ' – RafaelC

+0

Вещь - я хочу реализовать 6-битный регистр сдвига. xor несколько бит в этом регистре и подать его на вход. Например, если у меня есть a = 010000, я буду xor a [1], который равен 1 с [2], который равен 1 и получит выход 1. После подачи этого 0 для ввода нового номера будет 010001. –

ответ

1

Вы можете использовать побитовые операции непосредственно для целых чисел. Вы можете конвертировать между двоичными строками и целыми числами для печати/отладки с помощью bin, как вы уже знаете, и преобразования строки в двоичный код с помощью int(binary_string, 2).

seed = bin(18) # 0b10010 
bitmask = '01101' 
xor_result = 18^int(bitmask, 2) 
print(bin(xor_result)) # 0b11111 
+0

Вещь - это я хочу реализовать 6-разрядный сдвиговый регистр. xor несколько бит в этом регистре и подать его на вход. Например, если у меня есть a = 010000, то я буду xor a [1], который равен 1 с [2], который равен 1 и получит выход 1. После подачи этого 0 для ввода нового номера будет 010001. –

+0

Право - так что если вы хотите для работы со строкой, которую вы можете, но вам понадобятся фактические побитовые операции над целыми числами. Вы можете использовать '' 0'' или '' 1'' для ints перед выполнением операции. – Karin

+0

Спасибо, что помогает. Еще кое-что. Я хочу преобразовать его в двоичный код для определенного количества бит. Если я использую check = format (a, 'b'), где a равно 16, он дает мне двоичный бит 5 бит: 10000. Что делать, если я хочу, чтобы количество бит битов составляло 6 или 8? –

2

Вы можете использовать битовые операторы непосредственно на номера.

Например 18 & 3 получает вас 2, 18 | 3 получает вас 19, 1 << 5 получает вас 32. Тот факт, что читаемое человеком представление при печати номера является десятичным числом, не изменяет того факта, что на базовом уровне все номера просто хранятся и управляются как двоичные числа.

bin просто дает двоичное представление числа в виде строки. Хотя это полезно для отладки или выхода на человека, вы, как правило, не захотите использовать его для манипуляции бит напрямую.

+0

Вещь - это я хочу реализовать 6-разрядный сдвиговый регистр. xor несколько бит в этом регистре и подать его на вход. Например, если у меня есть = 010000, я буду xor a [1], который равен 1 с [2], который равен 1, и получит выход 1. После подачи этого 0 для ввода нового номера будет 010001. –

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