비트 연산(Bit Manipulation) - 비트 역전

주성천·2025년 7월 20일

알고리즘적 사고

목록 보기
3/4
post-thumbnail

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. 작동 흐름

  1. 초기화
  • 역전시킬 값의 비트 크기만큼 반복할 수 있도록 i=8로 초기화 한다.
  • res에는 비트가 역전된 값을 담을 수 있도록 0으로 초기화 한다.
  1. 비트를 역전시킬 값과 1을 "&" 연산하여 비트 값을 구한다.
  2. 1에서 얻은 값을 res의 값과 res에 "|" 연산을 진행한다. 이는 정수형의 += 와 같이 논리합 연산을 통해 res의 값을 계속 갱신시킬 목적의 연산이다.
  3. 비트를 역전시킬 값을 ">>" 연산으로 우 -> 좌 방향으로 자리를 1씩 민다. 이는 역전시킬 값의 1번째 값을 사용했기 때문에, 1씩 자리이동을 하는 것이다.
  4. 3에서와 같은 이유로 res도 자리를 우 <- 좌 방향으로 자리를 1씩 민다.
  5. 1~4까지의 연산을 비트 크기만큼 반복한다.

2.시각화

  • 1~2회 연산
    1~2회 연산
  • 3~4회 연산
    3~4회 연산
  • 5~6회 연산
    5~6회 연산
  • 7~8회 연산
    7~8회 연산
profile
기록과 정리

0개의 댓글