[정보통신용어] 비트 스터핑

bit stuffing – 비트 스터핑

비트 스터핑은 데이터 스트림에 비트들을 추가하는 관습을 말한다.

비트 스터핑은 다음과 같은 이유들 때문에 많은 네트웍이나 통신 프로토콜들에서 사용된다.

실제 데이터가 제어 정보로 해석되는 경우를 방지하기 위해 삽입된다.

예를 들어, X.25와 같은 많은 프레임 기반의 프로토콜들은 프레임의 시작과 끝에 6개의 연속되는 “1” 비트를 신호로서 보낸다.

그러므로, 만약 실제로 한 줄에 여섯 개의 “1” 비트들을 갖는 데이터가 전송되는 경우라면, 처음 5 개의 “1” 비트 이후에 강제로 “0”을 삽입함으로써, 그 데이터가 프레임 구획 문자로 해석되지 않도록 조치한다.

물론, 수신측에서는 임의로 부가된 비트를 다시 제거해야만 한다.

고정길이 프레임을 필요로 하는 프로토콜들에서는, 때로 프레임 크기를 맞추기 위해서 비트가 삽입된다.

연속적인 데이터 스트림을 필요로 하는 프로토콜에서는, 스트림이 깨지지 않도록 보장하기 위해, 때로 “0” 비트들이 삽입되는 경우가 있다.

[정보통신용어] 비트 단위의 (연산자)

bitwise – 비트 단위의 (연산자)

비트 단위의 연산자는 그것의 피연산자를 바이트 단위가 아닌 비트 단위로 처리한다.

비트 단위의 불린 연산자들은 각 연산자의 비트 N을 NOT, AND, OR, XOR 등과 같은 불린 함수를 사용하여 결과의 비트 N을 생성하기 위해 결합시킨다.

예를 들면, C 언어에서 “&”로 표시되는 비트 단위 AND 연산자는 13 & 9의 값을 1101 & 1001 = 1001 = 9 와 같이 구할 것이다.

C 언어에서 “&&”로 표시되는 논리적 AND가 13 && 9를 TRUE && TRUE = TRUE = 1과 같이 구할 것이다.

Acorn의 BASIC V와 같은 일부 언어에서는, 비트 단위의 연산과 논리 연산 모두에 같은 연산자가 사용된다.

이것은 대체로 0도 아니고 -1도 아닌 값 x에 NOT이 적용되었을 때를 제외하고는, x와 (NOT x) 모두가 0이 아닌 값을 가질 것이며, 그러므로 TRUE로 처리될 것이다.

비트 단위의 연산, 즉 비트와이즈 연산이라고 표현하지는 않지만 그외의 비트 레벨 연산들이 있는데, 이런 것들에는 시프트와 로테이트 등이 포함된다.