본문 바로가기
개발 이야기/개발자 이야기

비트연산 활용하기

by 런던살자 2019. 6. 22.

안녕하세요 마블랑입니다.

이번 포스팅은 비트연산에 대해서 알아보도록 하겠습니다.

가장 기본이 되는 비트연산표를 먼저 알고 난뒤에 보시면 이해가 쉬울꺼 같아 간단하게 비트연산에 대해서 설명을 해두었습니다.

 

 

1. AND ( & ) 


AND 연산은 두개의 값이 모두 1일 경우에만 결과값으로 1을 출력합니다.

비트연산중 AND 연산을 통해 해당 비트가 켜져있는지 확인을 할수 있고 값을 0으로의 초기화 할수도 있습니다.

 


1) 비트 상태 확인

    1011 1011 
&  0000 0010 -> BIT2 상태확인을 위한 AND 연산
---------------------
    0000 0010 -> 결과값에서 두번째 비트가 1이므로 BIT2가 켜짐 상태인것을 확인

2) 0으로 초기화

   1011 1011 

& 0000 0000 -> 0을 AND연산
---------------------
   0000 0000 -> 모두 0으로 초기화

[코드활용] 

if (byte & BIT3)
//3번째 비트 : 1
else
//3번째 비트 : 0

 


2. OR ( | )


OR 연산은 두개의 값중 하나만 1일 경우에 결과값으로 1을 출력합니다.

OR 연산은 해당 비트에 값을 추가할때 사용할 수 있습니다.  그리고 데이터 값을 1 로 초기화 할수 있습니다.

 


1) 비트 상태 추가

  1010 1001 
| 0100 0100 -> BIT3과 BIT7 값을 추가하는 OR 연산
---------------------
  1110 1101 -> BIT3과 BIT7 이 상태가 1로 바뀐것을 확인

2) 1로 초기화

  1010 1001 
| 1111 1111 -> 1을 OR연산
---------------------
  1111 1111 -> 모두 1로 초기화

[코드활용] 

byte |= BIT5; // BIT5 상태 추가 

 


3. XOR 연산 ( ^ )


XOR 연산은 두개의 값이 같으면 0, 다르면 1을 출력합니다.

XOR 연산을 통해 특정 자리의 비트를 반전 시킬수 있습니다.

반전하려는 BIT에 1을 XOR 해주면 됩니다.


1) 특정 자리수 반전
   1010 1001 
^ 0000 0011 -> BIT1과 BIT2 를 반전
---------------------
1010 1010 -> BIT1과 BIT2 이 상태가 1로 바뀐것을 확인

※ 전체반전 
   1010 1001 
^ 1111 1111 -> 전체 비트를 반전
---------------------
   0101 0110 -> 전체 비트의 상태가 반전된것을 확인 

[코드활용] 
byte ^= BIT6; // BIT6 반전 상태 적용

 


4. NOT 연산 (~)


NOT 연산은 모든 비트를 반전 시키는 연산입니다.


1) 모든 비트 반전
~ 1010 1001 -> 모든 자리수 반전
---------------------
   0101 0110

[코드활용] 
byte ~= byte; // 전체 반전 상태 적용

 


5. SHIFT


SHIFT는 숫자만큼 비트의 위치를 이동하는 연산입니다.


1) 왼쪽으로 2칸 이동
>>2 0000 1000 
---------------------
      0000 0010 -> 1의 위치가 변경된다

2) 오른쪽으로 2칸 이동
<<2 0000 1000 
---------------------
      0010 0000 -> 1의 위치가 변경된다

 

[코드활용] 
byte = byte >> 2; // 왼쪽으로 2칸 이동
byte = byte << 2; // 오른쪽으로 2칸 이동

 



비트연산에 대해 간단하게 알아봤습니다.

잘못된 부분이 있으면 댓글을 남겨주시기 바랍니다^^

이상 마블랑이었습니다. 읽어주셔서 고맙습니다

댓글