비트 연산 예제

C 프로그래밍 언어에서 비트 연산자사용으로 비트 레벨에서 작업을 수행할 수 있습니다. 비트별 NOTing 임의의 숫자 x 수율 -(x + 1). 예를 들어 ~-5는 4를 산출합니다. 비트와 AND는 두 개의 동일한 길이 의 이진 표현을 취하고 해당 비트의 각 쌍에 대한 논리AND 연산을 수행하는 이진 연산으로, 이는 이를 곱하는 것과 같습니다. 따라서, 비교된 위치에 있는 두 비트가 모두 1인 경우, 생성된 이진 표현의 비트는 1(1 × 1 = 1); 그렇지 않으면 결과는 0입니다(1 × 0 = 0 및 0 × 0 = 0). 예: 아래 설명에서 비트 위치의 표시는 오른쪽(가장 중요하지 않은) 쪽에서 계산되어 왼쪽으로 진행됩니다. 예를 들어 이진 값 0001(소수점 1)은 모든 위치에서 0을 가지지만 첫 번째 위치는 0입니다. 1) 왼쪽 시프트 및 오른쪽 시프트 연산자는 음수에 사용해서는 안 되며 피연산자 중 음수가 음수인 경우 정의되지 않은 동작이 발생합니다. 예를 들어 -1 << 1과 1 << -1의 결과는 정의되지 않습니다. 또한 숫자가 정수 크기보다 더 많이 이동되면 동작이 정의되지 않습니다.

예를 들어 정수 32비트를 사용하여 정수에 저장하는 경우 1 << 33은 정의되지 않습니다. 자세한 내용은 이쪽을 참조하십시오. 두 개 이상의 플래그 변수가 있는 경우 단일 변수를 사용하여 두 개 이상의 플래그 값을 나타내는 것이 더 효율적일 수 있습니다. 다음 예제에서는 이 작업을 수행하는 방법을 보여 주며 있습니다. bitwise 연산자사용으로 단일 변수에 두 개 이상의 플래그를 표시하는 첫 번째 단계는 사용하려는 비트의 의미를 정의하는 것입니다. 그림 5.1은 디스플레이에서 텍스트의 속성을 제어하는 데 사용할 수 있는 8비트의 예를 보여 주었습니다. 비트 조작에는 다른 비트별 작업이 사용됩니다. 이러한 비트 작업은 비트 패턴의 개별 비트에서 작동합니다. 비트 작업은 빠르며 시간 복잡성을 최적화하는 데 사용할 수 있습니다. 일부 일반적인 비트 연산자는 다음과 같습니다 : 2) 비트 XOR 연산자는 기술 인터뷰 관점에서 가장 유용한 연산자입니다.

그것은 많은 문제에 사용됩니다. 간단한 예는 “한 숫자를 제외한 모든 요소가 짝수 횟수로 발생하는 숫자 집합을 감안할 때 홀수 발생 번호를 찾으십시오”이 문제는 모든 숫자의 XOR을 수행하여 효율적으로 해결할 수 있습니다. bitwise 연산을 사용하면 실행 시간이 지정된 번호의 이진 형식에 있는 알고리즘의 수에 따라 달라질 수 있습니다. 이 알고리즘은 최악의 경우에만 logN에 도달하기 때문에 훨씬 낫습니다. 비트오(bitwise)는 상술한 레지스터의 선택된 비트를 1로 설정하는데 사용될 수 있다. 예를 들어, 0010(소수2)의 제4 비트는 비트 또는 네 번째 비트 세트만 있는 패턴으로 설정될 수 있다: 1) 그들은 그래픽, 특별히 XOR(Exclusive OR) 작업 영역에서 널리 사용된다. 2) 그들은 널리 우리가 다른 내용을 수정하지 않고 특정 레지스터의 하나의 비트를 설정 / 지우기 / 토글해야 상황에서, 임베디드 시스템에서 사용된다. 비트 위치에 적합한 마스크로 OR/AND/XOR 작업을 수행할 수 있습니다. 3) n 비트 맵과 같은 데이터 구조를 사용하여 n 크기 리소스 풀을 할당하여 현재 상태를 나타낼 수 있습니다. 4) 비트는 네트워킹에 사용되며, 일반적으로 모든 유형의 직렬 인터페이스를 통해 다른 시스템으로 전송되는 수많은 비트의 패킷을 프레이밍합니다. 또 다른 예는 비트 연산자 및 제로 테스트를 사용하여 두 정수 a와 b의 합계를 계산하는 방법을 보여주는 추가의 의사 코드 구현입니다: 여러 세트 플래그가있는 비트 마스크는 “/또는”과 같은 역할을합니다. 예를 들어 다음 두 가지는 동일합니다: 1024의 값은 다른 예제에서 사용한 8비트의 경계를 초과합니다.

カテゴリー: 未分類   パーマリンク

コメントは受け付けていません。