본문 바로가기
IT/알고리즘 및 자료구조

[알고리즘] 비트를 이용한 시프트, 논리 연산 ( <<, >>, &, |)

by 빨강자몽 2018. 6. 2.

시프트 연산( <<, >> )

  • 시프트 연산을 이용하면 1을 오른쪽으로 5칸 또는 왼쪽으로 5칸 이동 시킬 수 있다.
  • 또한 시프트 연산한 값을 더할 수도 있다.


논리 연산( &, | )

  • 만약에 5개의 칸을 전부 1로 만들고 싶다면 1<<5(100000)에 -1을 하면 된다.
  • &(and) 연산을 이용하면 두 개의 값이 1인 경우 1을 아닌 경우 0으로 만든다.
    (e의 경우 a와 d의 오른쪽으로부터 3, 5번째 칸은 1로, 다른 칸의 경우 0이 된다.)
  • |(or) 연산을 이용하면 두 개의 값 중 하나라도 1이 있는 경우 1을 아닌 경우 0으로 만든다.
    (f의 경우 a와 b의 오른쪽으로부터 3, 5번째 칸은 1로, 다른 칸의 경우 0이 된다.)


비트 연산의 응용

  • c의 값에 *2를 해주게 된다면 왼쪽으로 한 칸씩 이동이 된다.
  • 반대로 c의 값에 /2를 해주게 된다면 오른쪽으로 한 칸씩 이동이 된다.