bit 연산자 예제

Off
Non classé

C에서 오른쪽 시프트 연산자의 일반적인 사용은 다음 코드에서 볼 수 있습니다. 상기 동작은 특정 비트가 설정되는지(1) 또는 클리어(0)인지를 결정하는데 사용될 수 있다. 예를 들어 비트 패턴 0011(소수3)이 주어지면 두 번째 비트가 설정되었는지 여부를 결정하기 위해 비트 패턴을 사용하고 두 번째 비트에만 1을 포함하는 비트 패턴을 사용합니다. Java에서는 모든 정수 형식이 서명되므로 « < » 연산자는 산술 교대를 수행합니다. Java는 논리적 오른쪽 시프트를 수행하기 위해 연산자 « >> »를 추가하지만 논리 및 산술 왼쪽 시프트 연산은 서명된 정수에 대해 동일하므로 Java에는 « <<" 연산자가 없습니다. 비트별 NOTing 임의의 숫자 x 수율 -(x + 1). 예를 들어 ~-5는 4를 산출합니다. 각 비트에서 NOT 연산을 수행합니다. 아니, a의 반전된 값(일명 보수)을 산출합니다. NOT 작업에 대한 진실 테이블은 서명되지 않은 정수의 경우 숫자의 비트 별 보완은 서명되지 않은 정수 범위의 중간 지점에서 숫자의 "미러 반사"입니다. 예를 들어, 8비트 서명되지 않은 정수의 경우 NOT x = 255 – x는 그래프에서 0에서 255까지의 증가 범위를 255에서 0으로 줄이는 범위를 효과적으로 "뒤집는" 하향 선으로 시각화할 수 있습니다. 간단하지만 예시적인 사용 예는 각 픽셀이 부호 없는 정수로 저장되는 그레이스케일 이미지를 반전시키는 것입니다.

bitwise 연산자사용으로 단일 변수에 두 개 이상의 플래그를 표시하는 첫 번째 단계는 사용하려는 비트의 의미를 정의하는 것입니다. 그림 5.1은 디스플레이에서 텍스트의 속성을 제어하는 데 사용할 수 있는 8비트의 예를 보여 주었습니다. 이 연산자는 첫 번째 오퍼랜드를 지정된 비트 수를 오른쪽으로 이동합니다. 오른쪽으로 이동한 초과 비트는 삭제됩니다. 0 비트는 왼쪽에서 이동됩니다. 부호 비트는 0이 되므로 결과는 항상 음수가 아닙니다. 다른 비트별 연산자와 달리 제로 채우기 오른쪽 시프트는 서명되지 않은 32비트 정수로 반환됩니다. C-패밀리 언어에서 논리적 시프트 연산자는 왼쪽 교대조의 경우 « <« 입니다. 이동할 장소 수는 연산자의 두 번째 인수로 지정됩니다. 예를 들어, 2) 비트 와이즈 XOR 연산자는 기술 인터뷰 관점에서 가장 유용한 연산자입니다. 그것은 많은 문제에 사용됩니다.

간단한 예는 « 한 숫자를 제외한 모든 요소가 짝수 횟수로 발생하는 숫자 집합을 감안할 때 홀수 발생 번호를 찾으십시오 »이 문제는 모든 숫자의 XOR을 수행하여 효율적으로 해결할 수 있습니다.

Comments are closed.