Bitwise 운영자는 무엇입니까?

컴퓨터 프로그램에서 Bitwise Operator는 표현식에서 비트 패턴을 조작하기위한 연산자입니다. 비트와, 또는 독점적 또는 (XOR), 오른쪽 이동 및 왼쪽 시프트는 일반적인 작업입니다. 대부분의 컴퓨터 프로그래밍 언어에는 6 개의 사업자가 모두 포함됩니다. 컴퓨터 하드웨어를 제어하는 ​​프로그램에서 개별 비트를 설정, 청소 또는 뒤집는 데 종종 사용됩니다. Bitwise 연산자는 또한 데이터 암호화 및 압축 알고리즘에 자주 사용됩니다.

공통 비트 타이어 작업자는 일반적으로 C, C ++ 및 Java와 같은 프로그래밍 언어로 상징적으로 표시됩니다. 플러스 또는 마이너스 부호와 같은 산술 연산자와 마찬가지로 표현식에 사용됩니다. 비트 타이어 운영자는 앰퍼 샌드 & 또는 Caret ^과 함께 파이프 | 및 xor로 표시됩니다. 보체 연산자라고도 알려진 것은 아닙니다.

오른쪽 시프트 연산자는 오른쪽 > 을 가리키는 이중 카렛을 사용합니다. 대조적으로,왼쪽 시프트는 왼쪽 점 포인트 이중 카렛 <<로 표시됩니다. Java에는 오른쪽 포인트 트리플 카레 >>> 가 표시된 또 다른 오른쪽 시프트 조작이 포함되어 있습니다.

비트 타이어 작업자는 피연산자의 각 비트 쌍에 논리적 작업을 적용합니다. 오른쪽 시프트와 왼쪽 시프트에는 하나의 진정한 피연산자가 있습니다. 시프트 작업의 두 번째 값은 비트 수입니다. 비트 연산자의 작동 방식을 더 잘 이해하기 위해 개인은 피연산자를 이진 숫자로 시각화 할 수 있습니다. 예를 들어, 보체 운영자는 단일 피연산자의 각 비트를 반대쪽 상태로 뒤집습니다. 하나는 0이되고 0은 하나가됩니다. 8 비트 이진 값 00110101의 보완은 11001010입니다.

및 운영자에는 두 개의 피연산자가 있습니다. 조금씩, 논리적 및 작동은 각 피연산자로부터 하나의 해당 비트를 사용하여 수행됩니다. 각 비트 작동의 결과는 전체의 비트 위치에 배치됩니다.결과. 예를 들어, 및 연산자는 하나의 피연산자 중 비트 7을 다른 피연산자 중 비트 7로 처리합니다. 결과는 전체 결과의 비트 7에 저장됩니다.

AN 및 작동에서 결과는 결과가 하나가 되려면 두 피연산자 비트 여야합니다. 그렇지 않으면 결과는 0입니다. 예를 들어, 피연산자의 8 비트 바이너리 값이 00110101 및 11110000 인 경우 결과는 00110000이됩니다. 일반적인 사용은 결과에서 특정 비트를 제로화하는 것입니다. 이것은 피연산자 중 하나에 비트 위치에 0을 배치하여 수행됩니다.

또는 작동에서, 결과가 0이 되려면 두 피연산자 비트가 모두 0이어야합니다. 그렇지 않으면 결과는 하나입니다. OR 연산자의 일반적인 사용은 결과의 특정 비트를 결과에 설정하는 것입니다. 이것은 피연산자 중 하나에 비트 위치에 배치하여 수행됩니다. XOR 작동의 경우, 두 피연산자 비트가 모두 0이거나 피연산자 비트가 모두 하나 인 경우 결과는 0입니다. 결과는 하나입니다.

.

왼쪽 시프트 aND 오른쪽 시프트는 지정된 비트 위치에 따라 피연산자의 비트를 왼쪽 또는 오른쪽으로 이동합니다. 논리적 오른쪽 시프트는 시프트의 일부로 0을 가장 왼쪽으로 움직입니다. 산술 오른쪽 변속은 시프트 후 동일한 위치로 이동하기 전에 가장 왼쪽 비트 (부호 비트)를 복사합니다. 원래 비트도 나머지와 함께 바로 이동됩니다. 어느 한 유형의 왼쪽 시프트가 0을 가장 오른쪽으로 움직입니다.

피연산자가 오른쪽으로 이동하면 시프트 전의 가장 오른쪽 비트는 단순히 버려집니다. 마찬가지로, 왼쪽 시프트 전 가장 왼쪽 비트가 배치됩니다. 피연산자의 다른 쪽 끝으로 감싸지 않습니다.

비트 시프트 시프트 작업은 언어 및 구현에 따라 다릅니다. 예를 들어, C 및 C ++에서 >> << 피연산자가 서명되지 않은 정수 인 경우 논리적 변화를 수행합니다. 피연산자가 서명 된 정수 인 경우, 대신 산술 이동이 수행 될 가능성이 높습니다. Java에서는 모든 피연산자가 서명 된 것으로 간주되며 산술ETIC 변화는 항상 >> <<으로 수행됩니다. >>> 연산자는 논리적 올바른 시프트에 사용되지만, 신중한 타입 캐스트없이 실수로 산술 오른쪽 전환을 수행 할 수 있습니다.

.

오페라에 비트 길이가 다르거나 일부는 서명하고 일부는 서명되지 않은 경우 합병증이 발생할 수 있습니다. 복잡한 표현의 중간에있는 비트 타이어 운영자 및 숫자 상수는 예상대로 평가되지 않을 수 있습니다. 표현식에서 각 수량의 크기 및 서명/서명 된 특성을 지정하려면주의를 기울여야합니다. 이것은 프로그램 코드의 특정 변수 유형에 대한 신중한 타입 캐스팅 또는 중간 할당으로 수행 할 수 있습니다.

다른 언어

이 문서가 도움이 되었나요? 피드백 감사드립니다 피드백 감사드립니다

어떻게 도와 드릴까요? 어떻게 도와 드릴까요?