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 변화는 항상 >> 및 <<으로 수행됩니다. >>> 연산자는 논리적 올바른 시프트에 사용되지만, 신중한 타입 캐스트없이 실수로 산술 오른쪽 전환을 수행 할 수 있습니다.
.오페라에 비트 길이가 다르거나 일부는 서명하고 일부는 서명되지 않은 경우 합병증이 발생할 수 있습니다. 복잡한 표현의 중간에있는 비트 타이어 운영자 및 숫자 상수는 예상대로 평가되지 않을 수 있습니다. 표현식에서 각 수량의 크기 및 서명/서명 된 특성을 지정하려면주의를 기울여야합니다. 이것은 프로그램 코드의 특정 변수 유형에 대한 신중한 타입 캐스팅 또는 중간 할당으로 수행 할 수 있습니다.