>  기사  >  백엔드 개발  >  Python과 C 언어의 "AND, OR, XOR" 차이점

Python과 C 언어의 "AND, OR, XOR" 차이점

高洛峰
高洛峰원래의
2016-10-19 13:32:521617검색

파이썬:

비트 연산은 모두 비트 연산이며 모두 연산에 참여하는 숫자의 이진 형식으로 작동합니다.

1. AND 연산: A, B의 값이 모두 1이면 A, B 및 연산 결과는 1, 그렇지 않으면 0(연산자: &)

2. OR 연산 : A 또는 B의 값이 1이면 A, B 또는 연산 결과는 1, 그렇지 않으면 0(연산자: |)

3. A와 B의 경우. 1과 다르면 A, B의 예산 결과는 1, 그렇지 않으면 0(연산자: ^)

4. 비트 반전(비트 부정): 메모리의 숫자를 나타내는 이진수를 반전하여 0을 취합니다. 1, 1은 0을 취함(연산자: ~)

연산방식 :

1. AND 연산 : 5&3 계산과정은 0101(2)&0011(2)=0001(2)=1

참고: 비교를 위해 두 숫자를 이진법으로 변환한다는 의미입니다. 위의 예에서와 같이 5의 이진법은 0101이고, 3의 이진법은 0011입니다. 그러면 이진법의 첫 번째 숫자는 입니다. 이 두 숫자는 동일합니다. 하나를 취하고 나머지는 모두 0을 취합니다. 0001을 얻은 다음 이를 십진수로 변환하면 결과는 1입니다

이해의 편의를 위해 "Python Core 프로그래밍"의 표 5-4에 또 다른 예를 들어 보겠습니다. >>>30&45 결과는 12입니다.

즉, 30=(011110), 45=(101101) 비트 연산은 12(1100)이 됩니다

나머지 3비트 연산은 이와 같습니다

2. OR 연산: 5|3 계산 과정은 0101(2)|0011(2)=0111(2)=7

3. XOR 연산: 5^3 계산 과정은 0101(2)^0011 (2)=0110(2)= 6

4. 비트 반전(비트 부정): 5=0101(2) 계산 과정~5=1010(2) 예: X의 비트 연산은 - (X+1)

기타 비트 연산: (>)

1.

>: 오른쪽 이동 방법은 왼쪽 이동과 동일하지만 반대 방향

컴퓨터에서 음수 표현:

원래 숫자를 비트 단위로 반전한 후 + 1 = 원래 숫자의 보수(원래 숫자의 역수)

원래 숫자: 컴퓨터에서 이진법으로 표현하여 일반 숫자를 형성합니다. 숫자는 원래 숫자입니다.

예: 5=00000000 00000000 00000000 00000101

5, 부정한 후, is 11111111 11111111 11111111 11111010 결과는 +1입니다. 원래 숫자의 보수는 -5 중 2입니다. 기본 표현

C 언어:

우선순위가 높은 것에서 낮은 것, 순서대로 ~, & , ^, |

비트 AND 연산에는 두 가지 일반적인 용도가 있습니다. 하나는 비트 문자열 정보의 특정 비트를 가져오는 것입니다. 예를 들어 다음 코드는 x의 가장 낮은 7비트를 가로채는 것입니다: x & 0177. 두 번째는 변수가 특정 비트를 유지하고 나머지 비트를 0으로 두는 것입니다. 예를 들어 다음 코드는 x가 가장 낮은 6비트만 유지하도록 허용합니다: x = x & 077.

비트별 OR 연산의 일반적인 용도는 비트열 정보의 특정 비트를 1로 설정하는 것입니다. 가장 오른쪽의 4비트를 1로 만들고 나머지 비트를 변수 j의 원래 비트와 동일하게 유지하려면 논리 OR 연산을 사용하면 됩니다. 017|j

비트 XOR 연산의 일반적인 사용; 비트열 정보를 찾는 것입니다. 특정 정보의 반대입니다. 정수변수 j의 가장 오른쪽 4비트 정보의 역함수를 찾고 싶다면 논리 XOR 연산 017^j를 사용하여 j의 가장 오른쪽 4비트 정보의 역함수, 즉 원래 1이었던 비트를 구하면 된다. , 결과는 0이고 원래 비트가 0인 경우 결과는 1입니다. a=3, b=4인 경우 임시변수를 사용하지 않고 두 값을 교환합니다. a와 b의 값을 바꾸려면 다음 대입문을 사용하면 됩니다:

a=a^b; a=a^b;

부정 연산 시스템 구현과 독립적인 상수를 생성하는 데 종종 사용됩니다. 변수 x의 하위 6비트를 0으로 설정하고 나머지 비트는 변경하지 않으려면 x = x & ~077 코드를 사용하여 이를 달성할 수 있습니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:Python 특수 구문다음 기사:Python 특수 구문