2016-09-09 2 views
-1

파이썬에서 이진수를 직접 조작하고 싶습니다. 예를 들어 내가직접 파이썬에서 비트 사용하기

seed =bin(18) 

를 사용하여 바이너리로 숫자를 변환 할 수 있었지만 문제는 내가 내가 그들을에 xor 어차피 배열 색인을 사용하여이 씨앗 액세스의 bits.If의 몇 가지에 xor 할 것입니다 진수 (18)가 'str'유형입니다. 10 진수를 2 진수로 변환하고 비트로 재생하는 방법은 무엇입니까?

미리 감사드립니다.

+2

숫자는 일반적으로 이미 이진수로 표현됩니다. 화면에 십진수로 표시됩니다. 비트를 조작하려면'int' 객체에 파이썬의 [비트 연산자] (https://wiki.python.org/moin/BitwiseOperators)를 사용하십시오. –

+0

'bin (18)'대신'18'을 사용하십시오 – RafaelC

+0

6 비트 시프트 레지스터를 구현하고 싶습니다. xor 또는이 레지스터에 몇 비트를 입력하여 피드에 입력합니다. 예를 들어 = 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 또는이 레지스터에 몇 비트를 입력하여 피드에 입력합니다. 예를 들어 내가 = 010000이면 xor a [1]이 1이고 [2]가 1이고 출력이 1이됩니다.이 0을 입력하면 새 번호를 입력하면 010001이됩니다. –

+0

오른쪽 - 원한다면 할 수있는 문자열로 작업 할 수 있지만 정수에 대해 실제 비트 연산을 수행해야합니다. 작업을 수행하기 전에''0 ''이나 ''1 ''을 int로 변환 할 수 있습니다. – Karin

+0

감사합니다. 하나 더. 나는 비트의 특정 번호에 대한 이진으로 변환 싶어요. check = format (a, 'b')를 사용하면 a가 16이고 이진수는 500000000입니다. 6 비트 또는 8 비트라고할까요? –

2

숫자에 비트 연산자를 직접 사용할 수 있습니다. 예를 18 & 3를 들어

1 << 5 당신에게 32를 얻을, 18 | 3 당신에게 19를 얻을, 당신에게 2을 가져옵니다. 숫자를 인쇄 할 때 사람이 읽을 수있는 표현이 10 진수라는 사실은 기본 수준에서 숫자가 모두 저장되고 2 진수로 연산된다는 사실을 변경하지 않습니다.

bin은 숫자로 이루어진 이진 표현을 문자열로 제공합니다. 디버깅이나 인간의 출력에 유용하지만, 일반적으로 직접 비트 조작에 사용하고 싶지는 않습니다.

+0

구현하고 싶은 것 6 비트 쉬프트 레지스터. xor 또는이 레지스터에 몇 비트를 입력하여 피드에 입력합니다. 예를 들어 = 010000이면 xor a [1]이 1이고 [2]가 1이고 출력이 1이됩니다.이 0을 입력하면 새 번호가 010001이됩니다. –