1. 구현
1.1 코드
#include <unistd.h>
unsigned char reverse_bits(unsigned char octet)
{
unsigned char res;
int i;
res = 0;
i = 0;
while (i < 8)
{
res = res | (octet & 1);
octet >>= 1;
res <<= 1;
i++;
}
return (res);
}
1.2. 작동 흐름
- 초기화
- 역전시킬 값의 비트 크기만큼 반복할 수 있도록 i=8로 초기화 한다.
- res에는 비트가 역전된 값을 담을 수 있도록 0으로 초기화 한다.
- 비트를 역전시킬 값과 1을 "&" 연산하여 비트 값을 구한다.
- 1에서 얻은 값을 res의 값과 res에 "|" 연산을 진행한다. 이는 정수형의 += 와 같이 논리합 연산을 통해 res의 값을 계속 갱신시킬 목적의 연산이다.
- 비트를 역전시킬 값을 ">>" 연산으로 우 -> 좌 방향으로 자리를 1씩 민다. 이는 역전시킬 값의 1번째 값을 사용했기 때문에, 1씩 자리이동을 하는 것이다.
- 3에서와 같은 이유로 res도 자리를 우 <- 좌 방향으로 자리를 1씩 민다.
- 1~4까지의 연산을 비트 크기만큼 반복한다.
2.시각화
- 1~2회 연산

- 3~4회 연산

- 5~6회 연산

- 7~8회 연산
