안녕하세요. STM32와 같은 마이크로컨트롤러(MCU) 환경에서 UART, SPI 등 고속 시리얼 통신을 구현할 때, 데이터의 연속성을 유지하고 유실을 막기 위해 링버퍼(Ring Buffer) 자료구조를 많이 사용합니다. 링버퍼를 사용할 때 연산 중에 인덱스가 버퍼의 끝에 도달했을 때 다시 0으로 돌아가게 만드는 것이 있을 것입니다. 이때 일반적으로 나머지 연산자(%)를 사용합니다. 고성능/저전력 펌웨어를 개발할 때는 비트 AND 연산자(&=)를 활용한 최적화 기법을 사용하기도 합니다. 이번 글에서는 버퍼 크기 조건에 따른 비트 연산의 원리와 클럭 단위의 성능 이점, 그리고 오버런(Overrun)을 방지하는 안전한 C언어 구현 패턴을 알아보겠습니다. 1. 인덱스 순환: 나머지 연산자(%)와 비트 ..