비트연산자


비트 단위의 정보를 다룰 있는 연산자.

시스템 자체나 네트워크 관련된 프로그램 개발할 사용

특정 위치의 비트가 참인지 거짓인지 확인하거나

값을 변경할 경우에 사용함.

쉬프트연산은 패딩을 동반.

원하는 비트만큼 쉬프트하고 데이터가

기존비트의 크기를 유지해야 한다면 

유실된 비트의 수만큼 새로운 정보가 채워지는데 

이것을 패딩이라 한다.

왼쪽으로 쉬프트를 통해 곱셉 연산을

오른쪽 쉬프트를 통해 나눗셈 연산을 

수행한 결과를 얻을 있음.

 

 

AND : & (값이 모두 1 )

ex) 0x11223344 & 0xFFFF0000 : 11220000

0001 0001 0010 0010 0011 0011 0100 0100

1111 1111 1111 1111 0000 0000 0000 0000

0001 0001 0010 0010 0000 0000 0000 0000

 

OR : | (값이 하나라도 1이라면

ex) 0x11223344 | 0xFFFF0000 : FFFF3344

0001 0001 0010 0010 0011 0011 0100 0100

1111 1111 1111 1111 0000 0000 0000 0000

1111 1111 1111 1111 0011 0011 0100 0100

 

XOR : ^ (값이 서로 다른 경우에 )

ex) 0x11223344 | 0xFFFF0000 : EEDD3344

0001 0001 0010 0010 0011 0011 0100 0100

1111 1111 1111 1111 0000 0000 0000 0000

1110 1110 1101 1101 0011 0011 0100 0100

 

NOT : ~ (값을 반전)

ex) ~0x11223344 : EEDDCCBB

0001 0001 0010 0010 0011 0011 0100 0100

1110 1110 1101 1101 1100 1100 1011 1011

 


<< : 왼쪽으로 쉬프트

ex) 0x00001122 << 8 : 0x00112200

0000 0000 0000 0000 0001 0001 0010 0010

0000 0000 0001 0001 0010 0010 0000 0000


8비트를 왼쪽으로 쉬프트하고 

왼쪽으로 쉬프트 값은 절사되고

오른쪽에 새로 값이 패딩되는데 

값은 0으로 채워진다.

 


>> : 오른쪽으로 쉬프트

ex) 0x00001122 >> 8 : 0x00000011

0000 0000 0000 0000 0001 0001 0010 0010

0000 0000 0000 0000 0000 0000 0001 0001 


8비트를 오른쪽으로 쉬프트하는데

원래 수가 양수이면 0, 음수였으면 1

패딩하는 것이 왼쪽으로 쉬프트와 다른점.

 

-8 >> 3 예를 들어보면

1111 1111 1111 1111 1111 1111 1111 1000

1111 1111 1111 1111 1111 1111 1111 1111



-8을 오른쪽으로 3만큼 쉬프트 하게되면

2 2승까지의 0 정보가 절사되게 되고

-8은 음수이고 부호비트가 1이므로

그 부호를 유지하기 위해서

왼쪽비트부터 1로 채워지게 된다.






** 잘못알고 있는 것이 있으면 댓글로 알려주시면 감사하겠습니다! **

+ Recent posts