Mafa Dev

비트연산자 본문

C언어/유용한 것

비트연산자

마파_ 2013. 1. 17. 12:00

연산자 : &

-> 비트 단위로 AND 연산을 한다 ( 두 비트가 1 이여야 1 이다.)

 

       ex) num1 = 5   ( 00000000 00000000 00000000 00000101 )

            num2 = 15  ( 00000000 00000000 00000000 00001111 )

num1 & num2 =  5   ( 00000000 00000000 00000000 00000101 )

 

 

 

연산자 : |

-> 비트 단위로 OR 연산을 한다 ( 두 비트가 0 이여야 0 이다.)

 

       ex) num1 = 5   ( 00000000 00000000 00000000 00000101 )

            num2 = 15  ( 00000000 00000000 00000000 00001111 )

num1 & num2 =  0   ( 00000000 00000000 00000000 00000000 )

 

 

연산자 :  ^

-> 비트 단위로 XOR 연산을 한다. ( 두 비트가 다르면 1 같으면 0)

 

       ex) num1 = 5   ( 00000000 00000000 00000000 00000101 )

            num2 = 15  ( 00000000 00000000 00000000 00001111 )

num1 & num2 =  12  ( 00000000 00000000 00000000 00001010 )

 

 

연산자 : ~

-> 단항 연산자로서 피연산자의 모든 비트를 반전시킨다.

 

       ex) num1 = 15  ( 00000000 00000000 00000000 00001111)

          ~num1 = -16 ( 11111111 11111111 11111111 11110000) -> 값의 부호비트를 담당하는 MSB도 변경되어 음수로 변함

 

 

연산자 : <<

-> 비트의 열을 왼쪽으로 이동시킨다.

 

       ex) num1 = 15 ( 00000000 00000000 00000000 00001111 )

     num1 << 1 = 30 ( 00000000 00000000 00000000 00011110 )

     num1 << 2 = 60 ( 00000000 00000000 00000000 00111100 )

     num1 << 3 =120 ( 00000000 00000000 00000000 01111000 )

     값이 2배씩 증가 한다는 것을 알수가 있다.

 

 

연산자 : >>

-> 비트의 열을 오른쪽으로 이동시킨다.

 

     ex) num1 = 120  ( 00000000 00000000 00000000 01111000 )

     num1 >> 1 = 60  ( 00000000 00000000 00000000 00111100 )   

     num1 >> 2 = 30  ( 00000000 00000000 00000000 00011110 ) 

     num1 >> 3 = 15  ( 00000000 00000000 00000000 00001111 )

     값이 2배씩 감소 한다는 것을 알수가 있다.