비트 연산자 예제

이러한 기본 비트 마스크에서 비트방향 논리 연산을 사용하여 새 비트 마스크를 만들 수 있습니다. 예를 들어, 비트 마스크 1011 ORing FLAG_A, FLAG_B 및 FLAG_D에 의해 만들 수 있습니다: 개념적으로, 비트 논리 연산자는 다음과 같이 작동: 마지막으로, 플래그는 모두 NOT 연산자로 대칭 할 수 있습니다: 여러 세트 플래그가 있는 비트 마스크는 « /또는 »처럼 작동합니다. 예를 들어 다음 두 가지는 동일합니다: 둘 이상의 플래그 변수가 있는 경우 단일 변수를 사용하여 둘 이상의 플래그 값을 나타내는 것이 더 효율적일 수 있습니다. 다음 예제에서는 이 작업을 수행하는 방법을 보여 주며 있습니다. C에서 다음 6개의 연산자는 비트 별 연산자(비트 수준에서 작업) 비트 방향 연산자 중 4개는 동등한 논리 연산자가 있습니다. 그들은 동일한 진실 테이블을 가지고 있다는 점에서 동일합니다. 그러나 논리 연산자는 각 발산자를 독립값으로 취급하는 대신 참 또는 false 값을 하나만 갖는 것으로 처리합니다. 논리 연산자는 0 false및 zero가 아닌 값을 true로 간주합니다. 또 다른 차이점은 논리 연산자가 단락 평가를 수행한다는 것입니다.

비트 이동은 값을 숫자 수량이 아닌 일련의 비트로 처리하기 때문에 비트 이동으로 간주되기도 합니다. 이러한 작업에서 숫자는 왼쪽 또는 오른쪽으로 이동되거나 이동됩니다. 컴퓨터 프로세서의 레지스터는 고정 된 너비를 가지므로 일부 비트는 한쪽 끝에서 레지스터의 « 이동 »되고 동일한 수의 비트는 다른 쪽 끝에서 « 이동 »됩니다. 비트 시프트 연산자 간의 차이점은 시프트된 비트의 값을 결정하는 방법에 있습니다. 5) & 연산자는 숫자가 홀수인지 또는 심지어 표현값(x & 1)이 x가 홀수인 경우에만 0이 아닌지 신속하게 확인하는 데 사용할 수 있으며, 그렇지 않으면 값이 0이 됩니다. 비트xOR는 레지스터에서 선택한 비트를 반전시키는 데 사용될 수 있습니다(토글 또는 뒤집기라고도 함). 모든 비트는 XORing에 의해 1로 전환 될 수 있습니다. 예를 들어, 비트 패턴 0010(소수2)을 감안할 때 두 번째 및 네 번째 위치는 비트 패턴이 있는 비트 패턴XOR로 전환될 수 있습니다. 비트 연산자 및 제로 테스트를 사용하는 두 정수 a와 b: 플래그는 비트 마스크로 ANDing하여 지울 수 있으며, 여기서 값 0이 있는 각 비트는 이미 지워지지 않은 경우 해당 플래그를 지웁니다. 이 비트 마스크는 NOTing 기본 비트 마스크에 의해 만들 수 있습니다. 예를 들어 비트마스크(1010)는 파스칼과 모든 방언(예: 오브젝트 파스칼 및 스탠다드 파스칼)에서 각각 « shl » 및 « shr »인 플래그 A와 C를 지우는 데 사용할 수 있습니다. 이동할 장소 수는 두 번째 인수로 지정됩니다.

예를 들어, 다음 은 x를 두 비트로 왼쪽으로 이동한 결과를 할당합니다. 방법? 그러나 음수의 경우는 그렇지 않습니다. 예를 들어 -9 >> 2는 -9 >> 2(-3의 산출량)와 다른 1073741821을 산출합니다: 2) 비트와이즈 XOR 연산자는 기술 인터뷰 관점에서 가장 유용한 연산자입니다. 그것은 많은 문제에 사용됩니다. 간단한 예는 « 한 숫자를 제외한 모든 요소가 짝수 횟수로 발생하는 숫자 집합을 감안할 때 홀수 발생 번호를 찾으십시오 »이 문제는 모든 숫자의 XOR을 수행하여 효율적으로 해결할 수 있습니다. 시프트 연산자는 피연산을 빅 엔디안 순서로 32비트 정수로 변환하고 왼쪽 피연산자와 동일한 유형의 결과를 반환합니다. 오른쪽 피연산자는 32 보다 작아야하지만, 낮은 다섯 비트뿐만 아니라 경우 사용됩니다. bitwise 연산자사용으로 단일 변수에 두 개 이상의 플래그를 표시하는 첫 번째 단계는 사용하려는 비트의 의미를 정의하는 것입니다. 그림 5.1은 디스플레이에서 텍스트의 속성을 제어하는 데 사용할 수 있는 8비트의 예를 보여 주었습니다.

This entry was posted in Non classé. Bookmark the permalink.

Comments are closed.