참고문헌

개요

  • 비트 연산자 : 데이터를 비트 단위로 연산한다.
  • 0과 1로 표현이 가능한 정수타입, 정수형으로 캐스팅이 가능한 자료형만 비트연산이 가능
  • 기능에 따라, (1) 비트 이동 연산자, (2) 비트 논리 연산자로 구분

비트 이동 연산자

  • x«n
    • 정수 x의 각 비트를 n만큼 왼쪽으로 이동시킨다
    • 예를 들면, 1111«3 = 1111000
    • 십진수로 따지면 각 자리수를 2^3 곱한 것이므로, 원래수의 2^3배가 된다(15 -> 120)
  • x»n
    • 정수 x의 각 비트를 n만큼 오른쪽으로 이동시킨다.
    • 이 때, 부호를 의미하는 최상부의 값(1이면 음수, 0이면 양수)는 유지된다.
    • 예를 들면, 1111111»3 = 1111
    • 십진수로 따지면 각 자리수를 2^3으로 나눈 것이며, 나머지들은 버리는 연산이다.
    • 원래수를 2^3로 나눈 (나머지 버림) 수가 된다(127 -> 15)
  • x»>n
    • 최상부의 값이 0이면(양수이면), x»n의 결과와 같다.
    • 최상부의 값이 1이면(음수이면), x»n과 같이 오른쪽으로 이동시키되 최상부에 0을 채우기 때문에 부호가 바뀌는 것과 함께 완전히 다른 수가 된다(즉 이 때는 십진수로 이해할 수 없다).

비트 논리 연산자

  • & (AND)
    • 두 비트 모두 1일 경우에만 연산 결과가 1
    • 예시
      • 00001111
      • 00011001
      • 둘 간의 AND 비트연산 결과는
      • 00001001
  • ! (OR)
    • 두 비트 중 하나 이상이 1일 경우에 연산결과가 1
  • ^ (XOR)
    • 두 비트 중 하나는 1이고 다른 하나가 0일 경우에만 연산결과가 1
  • ~ (NOT)
    • 비트 반전