본문 바로가기

공부 이야기/그냥 찾아보는 공부

비트연산자로 몫 구하기, 홀수 구하기

1. 몫 구하기

int half(n){

return n >> 1;

}

원리

- 1비트씩 오른쪽으로 밀면 나머지와 여부와 상관없이 몫이 도출된다.

전제

- >>1 연산은 1비트씩 오른쪽으로 미는 연산이다.

예시

- 7(0111) => 3(0011)

참고

- 가장 왼쪽에 있는 비트(MSB)는 0으로 채워진다.

- <<n 연산은 n비트씩 왼쪽으로 밀면서 0으로 채운다.

 

2. 홀수 구하기

boolean odd(n){

return n & 0x1

}

 

원리

- 최하위비트(LSB)와 비트 1을 &로 비교한다.

전제

- 홀수는 LSB가 1이고 짝수는 0이다.

- &연산은 좌변과 우변이 일치할 경우에만 1을 출력한다.

예시

1 & 1 = 1

0 & 1 = 0