비트스트림
비트스트림(Bitstream)은 비트(bit)의 시계열(time series) 또는 연속적인 순서열(sequence)을 의미한다. 이는 0과 1의 이진수로 표현되는 디지털 데이터의 가장 기본적인 형태로, 컴퓨터 과학과 정보 이론에서 핵심적인 개념으로 사용된다.
바이트스트림(bytestream)은 바이트(일반적으로 8비트)가 나열된 것으로, 특별한 경우의 비트스트림으로 취급할 수 있다. 그러나 옥텟(octet)은 여러 방식으로 8비트로 인코딩될 수 있으므로(비트 넘버링 참조), 바이트스트림과 비트스트림 사이에 유일하고 직접적인 변환 관계가 항상 존재하는 것은 아니다.
비트스트림은 전기통신과 컴퓨팅 분야에서 광범위하게 사용된다. 예를 들어 SDH(Synchronous Digital Hierarchy) 통신 기술은 동기식 비트스트림을 전달하며, TCP(Transmission Control Protocol) 프로토콜은 동기 타이밍 없이 비동기식 바이트스트림을 전달한다. 또한 비트스트림을 가져와 기억 장치의 매체에 저장할 때 컴퓨터 파일이 만들어진다.
비트스트림이라는 용어는 현장 프로그래머블 게이트 어레이(FPGA)의 구성 데이터(configuration data)를 지칭할 때 자주 사용된다. FPGA는 일반적으로 직렬 PROM 또는 플래시 메모리 칩으로부터 직렬 비트스트림을 로드하여 구성되는 방식을 따르며, 대부분의 FPGA는 바이트 병렬 로딩 방식도 지원한다. FPGA 비트스트림의 상세한 형식은 일반적으로 해당 FPGA 제조업체의 고유(proprietary) 사양이다.
압축 알고리즘은 종종 비트스트림 단위로 코드를 처리한다. 이는 메모리의 가장 작은 주소 지정 단위인 바이트(8비트) 단위로 처리할 경우 낭비가 발생할 수 있기 때문이다. 일반적으로 저수준 언어에서 구현되지만, Python이나 Java와 같은 일부 고수준 언어도 비트스트림 입출력을 위한 네이티브 인터페이스를 제공한다.
운영체제에서 표준 입출력 라이브러리는 저수준의 페이지 기반 또는 버퍼 기반 파일 접근을 바이트스트림 패러다임으로 변환한다. 유닉스 계열 운영체제에서 각 프로세스는 세 개의 표준 스트림(표준 입력, 표준 출력, 표준 오류)을 가지며, 이는 단방향 바이트스트림의 예시에 해당한다. 유닉스 파이프(pipe) 메커니즘은 서로 다른 프로세스 간에 바이트스트림 통신을 제공한다.
수학 분야에서는 바움-스위트 수열, 에렌포이히트-미치엘스키 수열, 피보나치 워드, 콜라코스키 수열, 정규 종이접기 수열, 루딘-샤피로 수열, 투에-모스 수열 등 여러 특정 무한 비트 시퀀스가 그 수학적 성질에 대해 연구되어 왔다.
인터넷 미디어 타입에서 임의의 바이트스트림을 나타내는 타입은 application/octet-stream이다. 잘 알려진 형식의 바이트스트림에 대해서는 별도의 미디어 타입이 정의되어 있다.