컴퓨터와 주고받은 정보나 컴퓨터에 저장된 정보 자체를 데이터라고 합니다.
1, 2라는 숫자나 "Hello"라는 문자열, 'sample.jpg' 같은 파일명은 모두 데이터입니다.
데이터는 명령어에 종속적인 정보로, “명령의 대상”이자 “명령어의 재료”입니다. 즉, CPU는 명령어를 실행하면서 데이터를 읽고, 가공하고, 저장합니다.
데이터는 메모리(RAM)의 특정 주소에 저장되고, CPU는 해당 주소를 참조해 처리합니다. 결국 프로그램 실행 동안 CPU ↔ 메모리 사이에서 읽고 쓰는 모든 값이 데이터입니다.
데이터는 해석 이전의 “값(비트의 나열)”이고, 정보는 그 데이터에 맥락(의미)이 붙은 결과입니다. 같은 데이터라도 해석 규칙(포맷/인코딩/스키마)이 달라지면 전혀 다른 정보가 됩니다.
“데이터는 명령어가 처리하는 재료이며,
실행 중에는 메모리 주소에 저장된 값으로 존재한다.”
컴퓨터는 전기적 신호(켜짐/꺼짐) 기반이라 0과 1만 이해합니다. 그래서 값을 표현할 때 자리올림이 2에서 발생하는 2진법을 사용합니다.
💡 TIP / 참고사항
2진법은 사람이 읽기엔 너무 길어지기 때문에, 실무에서는 2진수를 4비트(니블) 단위로 끊어 16진수로 축약해 표현하는 경우가 많습니다. 그래서 MAC 주소, IPv6 주소처럼 긴 값은 16진수 표기가 자주 등장합니다.
1비트는 0 또는 1, 8비트는 1바이트입니다. CPU/메모리는 바이트 단위로 읽고 쓰는 것이 일반적이며, CPU가 한 번에 처리하는 기본 폭을 워드(word)라고 부르기도 합니다(예: 32-bit/64-bit).
컴퓨터가 다루는 모든 데이터는 결국 비트(bit)들의 나열입니다.
우리가 보는 의미는 “어떤 규칙(인코딩/포맷/스키마)”으로 해석하느냐에 따라 달라집니다. 이 규칙이 틀리면 깨진 글자(문자 인코딩 문제), 색상 이상(컬러 스페이스/비트뎁스), 재생 오류(코덱 불일치)가 발생합니다.
2의 보수는 음수를 표현하기 위한 대표 방식입니다. 덕분에 덧셈 회로를 그대로 써서 음수/양수 계산을 처리할 수 있어 하드웨어가 단순해집니다.
IEEE 754 부동소수점은 실수를 “근사”로 저장합니다. 그래서 0.1 + 0.2 ≠ 0.3 같은 현상이 생길 수 있고, 금융/정산처럼 정확도가 중요한 도메인에서는 정수 기반(예: 원 단위), BigDecimal 같은 방식을 씁니다.
멀티바이트 값(예: int 4바이트)을 메모리에 저장할 때 바이트 순서가 필요합니다. 이 순서를 엔디안(Endianness)이라 합니다. 또한 CPU는 특정 크기 경계에 맞춰 데이터를 읽는 것이 빠른데, 이를 정렬(Alignment)이라 하고, 정렬이 깨지면 성능 저하가 발생할 수 있습니다.
예시
01000001 이라는 8비트 값은
• 정수로 보면 65 (10진수)일 수 있고
• ASCII로 해석하면 문자 'A'일 수 있습니다.
즉, 데이터(비트)는 같아도 규칙(인코딩/포맷/스키마)에 따라 의미가 달라집니다.
네트워크/API/저장(파일·DB)에서는 구조화된 데이터를 특정 형식으로 바꾸는 직렬화(Serialization)가 필요합니다. 예: JSON(가독성), Protocol Buffers(효율), Avro(스키마 중심) 등.
또한 용량/전송 비용을 줄이기 위해 무손실 압축(gzip 등)이나 손실 압축(JPEG, H.264 등)을 씁니다. 손실 압축은 “용량↓” 대신 “품질↓”이라는 트레이드오프가 있습니다.
💡 TIP / 체크
“데이터 오류”는 대부분 규칙 불일치에서 생깁니다: (1) 인코딩(UTF-8/UTF-16), (2) 시간/타임존(UTC/KST), (3) 타입/범위(int overflow), (4) 스키마 변경(필드 추가/삭제) 등을 특히 조심합니다.
- ✔️ 데이터는 해석 전 “값”이며, 정보는 데이터에 규칙/맥락이 적용된 의미다.
- ✔️ 컴퓨터는 0과 1로 모든 데이터를 표현하고, 실행 중에는 메모리 주소에 저장된 값으로 존재한다.
- ✔️ 정수는 보통 2의 보수, 실수는 IEEE 754로 표현되며(근사), 실수 오차는 실무에서 중요한 함정이다.
- ✔️ 멀티바이트 데이터는 엔디안과 정렬에 영향을 받고, 시스템/네트워크/파일 간 교환 시 규칙 통일이 필수다.
- ✔️ 서비스에서는 데이터가 직렬화되고 필요 시 압축되어 이동하며, 오류의 대부분은 규칙 불일치에서 발생한다.