이번 포스팅에서는 음향에서 빼놓을 수 없는 비트뎁스에 대해 알아보겠습니다. 아날로그와 디지털에 대해 잘 모르시는 분은 관련 포스팅 참조하세요.
Contents
Bit depth
아날로그 신호를 디지털로 변환하려면 표본화(sampling)와 양자화(quantize)라는 과정이 필요하다.
표본화는 연속적인 아날로그 신호에서 일정한 간격으로 샘플을 추출하는 과정을 말한다. 이 과정에서 아날로그 신호는 디지털화를 위해 순간적으로 샘플링되고, 이산화된 숫자 값으로 표현된다.
양자화는 표본화된 순간의 아날로그 값을 가장 가까운 이산화된 값으로 매핑하는 과정이다. 이는 샘플링된 신호 값을 가장 가까운 디지털 값으로 근사하여 표현하는 것을 의미한다. 이때, 비트 뎁스가 신호를 표현할 수 있는 가능한 값의 수를 결정하게 된다. 더 높은 비트 뎁스는 더 세밀한 값의 표현이 가능하며, 따라서 더 정확한 신호 재현이 이루어진다.
이러한 과정을 통해 아날로그 신호는 디지털 형태로 표현되어 저장, 처리, 전송되며, 다시 디지털 신호를 아날로그 신호로 복원하여 우리가 들을 수 있는 음향으로 재생된다.
여기서 비트에 대한 이해가 필요한데, 비트 (Bit)는 “Binary Digit”의 줄임말로, 디지털 데이터를 표현하는 가장 작은 단위이다. 비트는 두 가지 값을 가질 수 있으며, 일반적으로 0 또는 1로 표현된다.
비트는 컴퓨터 시스템에서 정보를 나타내는 기본 단위로 사용된다. 이진 코드(binary code)를 사용하여 숫자, 문자, 그림, 음성 등 다양한 유형의 데이터를 표현할 수 있다. 예를 들어, 8비트의 이진 코드를 사용하면 0과 1로 이루어진 8자리의 이진수를 통해 256개의 서로 다른 값을 표현할 수 있다.
비트는 컴퓨터의 기본적인 데이터 처리와 통신에서 중요한 역할을 한다. 여러 비트를 조합하여 더 복잡한 데이터를 표현할 수 있으며, 비트의 수는 데이터의 표현 범위와 정밀도에 영향을 미친다. 더 많은 비트를 사용할수록 더 많은 값의 조합과 더 높은 정밀도를 표현할 수 있다.
예를 들어, 8비트는 2^8 (256) 개의 서로 다른 값을 표현할 수 있다. 8비트를 사용하여 0부터 255까지의 숫자, 알파벳, 기호 등을 표현할 수 있다. 마찬가지로, 16비트는 2^16 (65536) 개의 값을 표현할 수 있으며, 32비트는 2^32 (약 42억 9천만) 개의 값을 표현할 수 있다.
bit depth는 양자화 과정에서 사용되는 비트 수를 의미한다. 비트 뎁스는 디지털 신호에서 표현할 수 있는 동일한 축의 값의 개수를 결정하며, 이는 신호의 세부 수준을 나타낸다. 높은 비트 뎁스는 더 정교한 수준의 신호 표현을 가능하게 하지만, 동시에 더 많은 저장 공간이 필요하게 된다.
비트 뎁스가 높을수록 원본 아날로그 신호에 대한 디지털 표현이 더욱 정확해지지만, 이는 더 많은 비트로 데이터를 표현해야 함을 의미한다. 따라서 디지털 오디오나 이미지와 같은 대용량 데이터를 저장하거나 전송해야 할 때는 비트 뎁스의 선택이 중요한 고려 요소가 된다.
Floating Point?
비트 뎁스에서의 Floating Point(부동소수점) 표현은 정수형(Integer)과는 달리 실수 값을 표현하기 위한 방식이다. 실수는 정수와 달리 소수점 아래의 값을 가질 수 있으므로, 부동소수점 표현은 이러한 소수점 아래 값을 포함하여 실수 값을 나타낸다.
일반적으로 비트 뎁스에서 부동소수점은 IEEE 754 표준을 따른다. 이 표준은 실수 값을 정규화된 형태로 표현하고, 부호 비트(Sign bit), 지수 비트(Exponent bits), 가수 비트(Significand bits)로 구성된다.
예를 들어, 32비트 부동소수점 형식인 IEEE 754 단정도(single-precision)는 부호 비트 1비트, 지수 비트 8비트, 가수 비트 23비트로 구성된다. 이렇게 구성된 비트는 실수 값을 표현하기 위한 여러 가지 규칙과 형식을 가지고 있다.
16비트 부동소수점:
- 자릿수: 1 비트(부호) + 5 비트(지수) + 10 비트(가수) = 16 비트
- 다이나믹 레인지: 약 ±6.55 × 10^4
16비트 정수형:
- 자릿수: 16 비트
- 다이나믹 레인지: 약 -32,768에서 32,767까지
32비트 부동소수점:
- 자릿수: 1 비트(부호) + 8 비트(지수) + 23 비트(가수) = 32 비트
- 다이나믹 레인지: 약 ±3.40 × 10^38
32비트 정수형:
- 자릿수: 32 비트
- 다이나믹 레인지: 약 -2,147,483,648에서 2,147,483,647까지
64비트 부동소수점:
- 자릿수: 1 비트(부호) + 11 비트(지수) + 52 비트(가수) = 64 비트
- 다이나믹 레인지: 약 ±1.80 × 10^308
64비트 정수형:
- 자릿수: 64 비트
- 다이나믹 레인지: 약 -9,223,372,036,854,775,808에서 9,223,372,036,854,775,807까지
위의 설명은 각 비트 수에 따른 일반적인 부동소수점과 정수형의 표현 방식을 나타냅니다. 이는 참고할 수 있지만, 특정 시스템이나 프로그래밍 언어에서는 다소 차이가 있을 수 있습니다.
부동소수점을 사용하면 더 넓은 범위와 높은 정밀도의 실수 값을 표현할 수 있다. 그러나 정수형과 달리 부동소수점 표현은 소수점 이하의 정밀도와 근사화 오차를 가질 수 있다. 이는 소수점 이하의 값을 유한한 비트로 표현하다보니 발생하는 한계이다. 하지만 과학 및 공학 계산처럼 정밀한 계산을 필요로 하지 않는 이상 이는 체감하는것이 불가능에 가깝다. 따라서 오디오나 비디오에서는 부동소수형 연산이 훨씬 유리하다.
+ DSP(Digital Signal Processor) 칩을 사용하는 디지털 믹싱 콘솔이나 디지털 시그널 프로세서는 실시간 오디오 신호 처리에 특화된 장치이다. 이러한 장치들은 레이턴시 해결을 위하여 부동 소수점 연산보다는 정수형 연산을 선호하는 경우가 많다.