← 모두의 툴

제어문자 DEL(127)은 왜 하필 127번일까 — 천공 테이프가 남긴 흔적

가이드 · 2026.08.21 최종 확인

ASCII 코드표를 보다 보면 127번 자리에 유독 눈에 띄는 이름이 있습니다. 바로 DEL(Delete)입니다. 0~31번 제어문자는 나름대로 순서대로 배정된 느낌이 드는데, DEL만 뚝 떨어져 128개 자리 중 가장 마지막, 정확히 최댓값인 127번에 있습니다. 이건 우연이 아니라 종이 위에 구멍을 뚫어 데이터를 저장하던 시절의 물리적 제약이 그대로 코드값에 화석처럼 남은 결과입니다.

1. 왜 하필 127까지인가 — 7비트가 만든 상한선

ASCII는 1960년대 초 문자 하나를 7비트로 표현하기로 정했습니다. 7비트로 만들 수 있는 조합은 2의 7제곱, 즉 128가지(0~127)뿐입니다. 이 128개 자리 안에 알파벳 대소문자, 숫자, 문장부호, 그리고 화면에 보이지 않는 제어문자까지 모두 담아야 했습니다. 나머지 8번째 비트는 통신 오류를 검출하는 패리티 비트로 따로 빼두는 관행이 있었기 때문에, 실제로 문자를 구분하는 데 쓸 수 있는 비트는 7개뿐이었습니다. ASCII 코드표 도구에서 필터를 "전체"로 두면 정확히 0번부터 127번까지 128행이 나오는 것도 이 7비트 설계가 만든 물리적 상한선입니다.

2. 천공 테이프: 한 번 뚫은 구멍은 지울 수 없다

초기 텔레타이프와 컴퓨터는 정보를 종이 테이프에 구멍을 뚫어 저장했습니다. 한 문자는 가로 한 줄에 7개의 구멍 자리(비트 위치)를 배정받았고, 그 자리에 구멍이 뚫려 있으면 1, 뚫려 있지 않으면 0으로 읽혔습니다. 문제는 타이핑 실수였습니다. 잉크나 종이 문서는 지우거나 고칠 수 있지만, 물리적으로 이미 뚫어버린 구멍은 다시 메울 방법이 없었습니다. 테이프를 통째로 버리고 처음부터 다시 뚫는 것 외에는 실수를 되돌릴 수단이 없었던 셈입니다.

3. 해법: "다 뚫어서 무효로 만든다"

그래서 자리 잡은 관습이 "구멍을 더 뚫는" 방식의 삭제였습니다. 어떤 문자를 잘못 뚫었든, 그 위치에 남아있던 나머지 구멍을 마저 전부 뚫어버리면 그 칸은 7개 비트가 모두 1인 상태, 즉 1111111이 됩니다. 판독기가 이 값을 만나면 "이 칸은 원래 무엇이었든 무효 처리된 문자"로 취급하도록 미리 약속해 둔 것입니다. 구멍을 빼는 건 불가능해도 추가로 뚫는 건 언제나 가능했기에 성립하는 트릭이었습니다. 이 이진수 1111111이 그대로 ASCII 표준에 DEL이라는 이름으로 흡수되면서, 오늘날까지 127번 자리를 지키고 있습니다.

진법 변환 예시: DEL을 각 진법으로 표현하면 2진수 1111111(7비트 전부 1) = 10진수 127 = 16진수 7F = 8진수 177입니다. 7비트 공간에서 표현 가능한 이진수 중 가장 큰 값이 곧 DEL의 코드값이라는 사실 자체가 "모든 비트를 채워 무효화한다"는 천공 테이프 관습을 그대로 보여줍니다. 이런 진법 간 변환은 ASCII 코드표에서 문자별로 10진수·16진수·8진수·2진수를 한 번에 확인할 수 있습니다.

4. DEL은 제어문자(0-31)와 한 식구가 아니다

ASCII를 흔히 "제어문자는 0~31번"이라고 뭉뚱그려 말하지만, DEL(127)은 이 범위 밖에 있습니다. 실제로 modoohub의 ASCII 코드표 도구 내부 코드를 보면 이 구조가 그대로 드러납니다. 0~31번은 NUL, SOH, STX부터 US까지 정리된 CTRL 이름 배열에서 이름을 가져오는 반면, 127번은 별도로 코드값이 127일 때만 'DEL'이라는 이름을 붙이는 분기가 따로 존재합니다. 즉 코드 구조상으로도 DEL은 "31개의 표준 제어문자 블록"에 속하지 않고, 인쇄 가능 영역(32~126) 바로 다음, 7비트 공간의 맨 끝에 홀로 위치하는 예외적인 자리라는 뜻입니다. 화면에 출력되지 않는 비인쇄 문자라는 성격은 제어문자와 같지만, 배정된 위치의 유래는 완전히 다릅니다.

5. 지금 키보드의 Delete/Backspace와는 다른 이야기

오늘날 키보드의 Backspace 키를 눌렀을 때 실제로 전송되는 코드가 8번(BS)인지 127번(DEL)인지는 운영체제와 터미널 설정에 따라 갈리며, 이는 순수히 역사적 관습이 남긴 혼선입니다. 유닉스 계열 환경은 전통적으로 127을 백스페이스에 매핑해 온 반면, 다른 환경은 8을 쓰기도 합니다. 이 혼선의 뿌리를 거슬러 올라가면 결국 "지울 수 없는 매체 위에서 무효화를 표현하기 위해 모든 비트를 채웠던" 천공 테이프 시대의 관습과 맞닿아 있습니다. 텍스트를 아스키 값으로 바로 변환해 확인하고 싶다면 ASCII 변환기로, 유니코드 코드포인트까지 함께 보고 싶다면 텍스트-유니코드 변환기로 대조해 보는 것이 빠릅니다.

자주 묻는 질문

Q. DEL(127)은 정말 삭제 키와 같은 문자인가요?

이름과 역사적 유래는 "삭제(무효화)"에서 왔지만, 오늘날 키보드의 Delete/Backspace 키가 실제로 이 코드를 보내는지는 환경마다 다릅니다. 유닉스 계열은 전통적으로 127을 백스페이스로 취급해 온 경우가 많고, 다른 환경은 8번(BS)을 쓰기도 합니다.

Q. 왜 하필 "모든 비트를 1로 채우는" 방식으로 무효화를 표현했나요?

천공 테이프는 이미 뚫은 구멍을 되돌릴 방법이 없는 매체였기 때문입니다. 구멍을 빼는 것은 불가능해도 추가로 뚫는 것은 언제나 가능했으므로, 남은 자리를 전부 뚫어 "이 칸은 무효"라고 표시하는 것이 유일하게 실행 가능한 삭제 방법이었습니다.

Q. DEL도 제어문자(0-31) 목록에 포함되나요?

표준 제어문자 블록은 0~31번까지이고 DEL(127)은 이 범위 밖의 별도 자리입니다. 비인쇄 문자라는 성격은 같지만, 코드 배정 구조상으로는 0~31번 제어문자 배열과 분리되어 7비트 공간의 최댓값 자리에 따로 있습니다.

Q. Extended ASCII(128~255)에도 DEL과 비슷한 무효화 문자가 있나요?

128번 이후 영역은 애초에 통일된 표준이 없어 플랫폼과 인코딩마다 정의가 다릅니다. 표준 ASCII의 "전부 뚫어서 무효화"라는 관습이 그 영역까지 일관되게 이어지지는 않습니다.