방송대 컴퓨터과학개론 2강: 비트 패턴과 수·문자 표현
컴퓨터 안의 10000011은 음수일 수도, 양수일 수도, 문자의 일부일 수도 있습니다. 비트열 자체에는 의미표가 붙어 있지 않기 때문입니다. 이 글은 표현 형식을 먼저 판별한 뒤 진법을 변환하고, 정수의 부호와 실수의 지수·가수, 문자의 코드를 해석하는 일관된 절차를 익히도록 구성했습니다.
비트열을 보기 전에 어떤 규칙으로 읽을지 정한다
현실에서 관찰하거나 측정해 얻은 값과 사실이 데이터라면, 이를 목적에 맞게 처리해 의사결정에 도움을 주는 지식으로 만든 것이 정보입니다. 강의는 이 관계를 I=P(D)로 표현합니다. 데이터 D에 처리 P를 적용해 정보 I를 얻는다는 뜻입니다.
컴퓨터는 문자, 정수, 실수, 이미지와 같은 서로 다른 데이터를 모두 0과 1의 비트 패턴으로 저장합니다. 그러나 같은 비트열이라도 어떤 자료형과 표현 규칙을 적용하느냐에 따라 의미가 달라집니다. 예를 들어 8비트 10000011은 부호 없는 정수라면 131이고, 2의 보수 정수라면 -125입니다. 비트만 보고 값을 단정할 수 없는 이유입니다.
| 먼저 확인할 질문 | 선택할 해석 규칙 | 그다음 할 일 |
|---|---|---|
| 수의 밑은 무엇인가 | 2·8·10·16진법의 자릿값 | 각 자리의 값 또는 묶음 크기 계산 |
| 정수에 부호가 있는가 | 부호화-크기·1의 보수·2의 보수 | 최상위 비트와 표현 범위 확인 |
| 실수 형식인가 | 부호·지수·가수 필드 | 정규화와 초과표기 해석 |
| 문자 데이터인가 | ASCII·유니코드 등 문자 코드 | 코드값을 문자 집합과 대응 |
판단 핵심: 비트열의 값은 ‘비트 패턴+해석 규칙’으로 결정됩니다. 문제에 비트 수, 진법, 부호 방식, 실수 형식 또는 문자 코드가 명시되어 있는지 먼저 찾고 계산을 시작하십시오.
비트·바이트·워드는 묶음의 크기를 말한다
비트는 binary digit의 줄임말로 0 또는 1 하나를 담는 최소 표현 단위입니다. 바이트는 8비트를 묶은 단위입니다. 따라서 한 바이트에는 28=256개의 서로 다른 패턴이 있지만, 그 패턴이 0∼255를 뜻하는지, -128∼127을 뜻하는지는 정수 표현 방식에 따라 달라집니다.
워드는 컴퓨터가 기본 연산 단위로 다루는 정보량이며 강의에서는 보통 32비트 또는 64비트로 설명합니다. KB, MB, GB, TB 등의 단위는 강의 기준에서 각각 210, 220, 230, 240바이트처럼 2의 거듭제곱으로 제시됩니다. 210≈103이므로 단위가 한 단계 커질 때마다 대략 천 배라고 빠르게 가늠할 수 있습니다.
단위와 값의 구분: “8비트”는 저장 공간의 폭이고 “256가지”는 만들 수 있는 패턴 수입니다. 여기에 부호 규칙을 적용해야 비로소 표현 가능한 최솟값과 최댓값이 정해집니다.
진법은 숫자보다 자릿값을 읽는 체계다
r진법은 0부터 r-1까지의 숫자를 사용하며, 각 자리는 소수점을 기준으로 r의 정수 거듭제곱 가중치를 갖습니다. 정수부는 오른쪽부터 r0, r1, r2, …이고 소수부는 왼쪽부터 r-1, r-2, …입니다. 16진법에서는 10∼15를 A∼F로 나타냅니다.
r진수를 10진수로 바꿀 때는 자리별 값을 더한다
강의의 101.10012는 다음처럼 정수부와 소수부의 자릿값을 모두 더합니다.
1×22+0×21+1×20+1×2-1+0×2-2+0×2-3+1×2-4
=4+1+0.5+0.0625=5.5625
같은 원리로 34568=3×83+4×82+5×8+6=1838이고, AE716=10×162+14×16+7=2791입니다. A와 E를 문자로 남겨 계산하지 말고 먼저 10과 14로 바꾸는 것이 안전합니다.
검산 기준: 소수점 왼쪽은 지수가 0,1,2,…로 커지고 오른쪽은 -1,-2,…로 작아집니다. 0과 1로 이루어진 101.1001₂의 값은 정수부 5보다 크고 6보다 작아야 하므로 5.5625가 범위에도 맞습니다.
변환 방향에 따라 나눗셈·곱셈·비트 묶음을 고른다
10진수에서 r진수로 갈 때는 정수부와 소수부를 분리합니다. 정수부는 r로 반복해 나눈 나머지를 역순으로 읽고, 소수부는 r을 반복해 곱한 결과의 정수 부분을 나온 순서대로 읽습니다. 두 부분을 마지막에 소수점으로 연결합니다.
학습용 의사코드로 두 방향을 나란히 쓰면 읽는 순서의 차이가 선명해집니다.
정수부 변환
while 값 > 0
나머지 목록에 값 mod r을 추가
값 = 값 div r
나머지 목록을 역순으로 출력
소수부 변환
while 소수부가 0이 아니고 필요한 자릿수에 도달하지 않음
소수부 = 소수부 × r
정수 부분을 순서대로 출력
소수부 = 새 소수 부분
60.6875를 세 진법으로 바꿔 본다
정수 60을 2로 반복해 나누면 나머지를 거꾸로 읽어 1111002을 얻습니다. 8진수는 60÷8=7…4이므로 748, 16진수는 60÷16=3…12이고 12=C이므로 3C16입니다.
소수 0.6875에 2를 반복해 곱하면 1.375, 0.75, 1.5, 1.0이 되고 정수 부분을 차례로 읽어 .10112입니다. 같은 방식으로 .548, .B16을 얻으므로 다음 등식이 성립합니다.
60.687510=111100.10112=74.548=3C.B16
2·8·16진수 사이는 소수점을 기준으로 묶는다
8=23이므로 8진수 한 자리는 3비트, 16=24이므로 16진수 한 자리는 4비트와 정확히 대응합니다. 소수점을 기준으로 정수부는 오른쪽에서 왼쪽으로, 소수부는 왼쪽에서 오른쪽으로 묶고 빈자리는 바깥쪽에 0을 채웁니다. 강의의 3645.1748을 3비트씩 풀면 011 110 100 101.001 111 100이고, 이를 4비트씩 다시 묶으면 7A5.3E16이 됩니다.
멈추지 않는 소수: 모든 10진 소수가 다른 진법에서 유한하게 끝나는 것은 아닙니다. 강의의 0.610은 2를 곱하는 과정에서 소수부 0.2→0.4→0.8→0.6이 반복되어 0.10011001…2가 됩니다. 실제 계산에서는 필요한 정밀도에서 멈추고 반올림 또는 절단 기준을 밝혀야 합니다.
정수 표현은 범위와 음수 만드는 규칙으로 판별한다
n비트 부호 없는 정수는 모든 비트를 크기에 사용하므로 0부터 2n-1까지 나타냅니다. 부호 있는 정수에서는 최상위 비트를 부호와 연결하며, 음수를 만드는 방식에 따라 같은 비트열의 값과 표현 범위가 달라집니다.
| n비트 방식 | 음수 표현 | 범위 | 0의 개수 |
|---|---|---|---|
| 부호 없음 | 음수 없음 | 0∼2n-1 | 1개 |
| 부호화-크기 | 부호 비트+절댓값 | -(2n-1-1)∼2n-1-1 | +0과 -0 |
| 1의 보수 | 양수의 모든 비트 반전 | -(2n-1-1)∼2n-1-1 | +0과 -0 |
| 2의 보수 | 1의 보수에 1을 더함 | -2n-1∼2n-1-1 | 1개 |
8비트에서 +124는 01111100입니다. 부호화-크기의 -124는 부호만 1로 바꾼 11111100, 1의 보수는 모든 비트를 뒤집은 10000011, 2의 보수는 여기에 1을 더한 10000100입니다. 양수 표현은 세 방식이 같지만 음수 표현은 다릅니다.
2의 보수는 뺄셈을 덧셈으로 바꾼다
24-17을 8비트로 계산하면 24는 00011000, 17은 00010001입니다. 17의 비트를 뒤집어 11101110을 만들고 1을 더하면 -17의 2의 보수 11101111입니다. 두 수를 더하면 1 00000111이며 8비트를 넘은 맨 앞 올림을 버리면 00000111=7이 됩니다.
반대로 8비트 2의 보수 10001101을 해석할 때 최상위 비트가 1이므로 음수입니다. 부호 없는 값 141에서 28=256을 빼면 141-256=-115입니다. 또는 1을 뺀 뒤 비트를 반전해 크기 115를 구해도 같은 답이 나옵니다.
오버플로 확인: 8비트 부호 없는 정수의 최댓값은 255입니다. 27510는 이진수 100010011로 9비트가 필요하므로 8비트 칸에 온전히 담을 수 없습니다. 계산값을 얻었더라도 지정된 비트 범위를 넘는지 마지막에 확인해야 합니다.
실수는 부호·지수·가수로 나누어 저장한다
아주 크거나 작은 실수는 과학적 표기법처럼 (-1)S×M×BE로 나타낼 수 있습니다. S는 부호, M은 가수, B는 기저, E는 지수입니다. 이진 부동소수점에서는 B=2이고 비트열을 부호·지수·가수 영역으로 나눕니다.
정규화는 같은 값을 일정한 꼴로 맞추는 과정입니다. 0이 아닌 이진수의 소수점을 옮겨 1.xxxx×2E 꼴로 만들면 표현이 하나로 정리됩니다. 지수는 음수도 필요하므로 실제 지수에 일정한 바이어스를 더한 초과표기법으로 저장합니다. 강의의 단정도 예에서는 8비트 지수에 바이어스 127을 사용합니다.
60.6875를 단정도 필드로 조립한다
- 앞서 구한 이진수는 111100.10112입니다.
- 소수점을 왼쪽으로 5칸 옮겨 1.111001011×25로 정규화합니다.
- 양수이므로 부호 비트는 0입니다.
- 저장 지수는 5+127=132이고, 13210=100001002입니다.
- 정규화된 맨 앞 1 다음의 111001011을 가수부 앞쪽에 놓고 23비트가 되도록 0을 채웁니다.
따라서 강의 예제의 필드 구성은 0 | 10000100 | 11100101100000000000000입니다. 각 필드 길이는 1+8+23=32비트, 즉 4바이트입니다.
| 형식 | 전체 크기 | 부호 | 지수 | 가수 | 강의의 바이어스 |
|---|---|---|---|---|---|
| 단정도 | 4바이트 | 1비트 | 8비트 | 23비트 | 127 |
| 배정도 | 8바이트 | 1비트 | 11비트 | 52비트 | 1023 |
풀이 순서: 10진 실수를 이진수로 바꾸고 → 1.x×2E로 정규화하고 → 부호 비트·E+바이어스·가수 비트를 차례로 채웁니다. 지수에 바이어스를 더하기 전에 정규화 이동 칸 수의 부호를 확인하십시오.
문자 코드는 모양이 아니라 약속된 번호를 저장한다
키보드에서 입력한 문자도 내부에서는 비트로 처리됩니다. 서로 다른 시스템이 같은 문자를 같은 값으로 해석하려면 문자마다 번호를 배정한 공통 코드 체계가 필요합니다. ASCII는 7비트로 27=128개의 코드값을 표현합니다. 예를 들어 숫자 ‘0’은 48, 대문자 ‘A’는 65, 소문자 ‘a’는 97에 대응합니다.
강의에서는 7비트 ASCII 앞에 패리티 비트를 붙이는 예도 제시합니다. 데이터 비트 1001100에는 1이 세 개 있으므로 짝수 패리티를 만들려면 앞에 1을, 홀수 패리티를 유지하려면 0을 붙입니다. 패리티는 문자의 의미를 늘리는 비트가 아니라 전송 중 일부 오류를 살피기 위한 검사 비트라는 점을 구분해야 합니다.
유니코드의 핵심 목적은 세계 여러 문자를 플랫폼·프로그램·언어와 무관하게 일관된 코드로 다루는 것입니다. 강의자료는 초기 유니코드의 관점에 따라 16비트·65,536개 문자로 단순화해 설명합니다. 현재 표준에서 유니코드는 16비트에만 한정되지 않으며 UTF-8·UTF-16·UTF-32 같은 인코딩 형식으로 전체 코드 공간을 표현합니다.
강의 기준과 현재 기준: ‘유니코드=문자마다 고정 16비트’로 외우면 현재 인코딩을 설명할 수 없습니다. 강의의 역사적 16비트 설명과, 하나 또는 두 개의 16비트 코드 단위를 사용하는 UTF-16을 구분하십시오.
EBCDIC과 BCD는 목적부터 다르다
강의에서 EBCDIC은 IBM 메인프레임 계열의 8비트 문자 코드로 소개됩니다. 반면 BCD는 문자를 위한 일반 코드가 아니라 10진수 각 자릿값을 4비트 8421 코드로 따로 나타내는 방식입니다. 29510는 숫자 2, 9, 5를 각각 바꿔 0010 1001 0101로 표현합니다. 295 전체를 이진수로 바꾸는 것과는 결과가 다릅니다.
새 비트 문제를 만났을 때의 판정 순서
- 비트열이 수인지 문자 코드인지, 수라면 정수인지 실수인지 확인합니다.
- 진법과 비트 폭을 표시하고 표현 가능한 범위를 먼저 계산합니다.
- 진법 변환은 목적지에 따라 자릿값 합, 반복 나눗셈, 반복 곱셈 또는 3·4비트 묶음을 선택합니다.
- 부호 있는 정수는 부호화-크기·1의 보수·2의 보수 중 어떤 규칙인지 확인합니다.
- 부동소수점은 정규화한 실제 지수와 저장된 초과 지수를 분리해 계산합니다.
- 문자는 문자 코드와 코드값을 대응시키고, 패리티처럼 의미가 아닌 검사 목적의 비트를 구분합니다.
- 마지막으로 자릿값을 되더하거나 원래 진법으로 역변환해 값과 범위를 검산합니다.
핵심 개념 정리
- 컴퓨터의 데이터는 비트 패턴으로 통일되지만 의미는 자료형과 표현 규칙이 결정합니다.
- r진수의 값은 각 숫자와 r의 위치별 거듭제곱을 곱해 더하며, 10진 정수와 소수의 변환 절차는 읽는 순서가 다릅니다.
- 2·8·16진수 사이는 소수점을 기준으로 각각 3비트와 4비트씩 묶어 직접 변환할 수 있습니다.
- 2의 보수는 음수를 만들어 뺄셈을 덧셈으로 처리하며 n비트 범위는 -2n-1∼2n-1-1입니다.
- 부동소수점은 부호·지수·가수로, 문자는 약속된 문자 코드로 표현되므로 필드와 코드 체계를 먼저 식별해야 합니다.
비트 문제는 곧바로 2진수 계산을 시작하기보다 ‘무엇을 나타내는 몇 비트인가’를 먼저 묻는 것이 핵심입니다. 표현 종류와 범위를 정하고, 그 규칙에 맞는 변환 절차를 적용한 뒤, 역변환과 범위 검사로 결과를 확인하십시오. 이 순서를 지키면 같은 비트열을 다른 자료형으로 잘못 읽는 오류와 변환 방향에 따른 순서 오류를 함께 줄일 수 있습니다.
예상문제 10선
1. 같은 8비트 10000011이 부호 없는 정수에서는 131, 2의 보수에서는 -125가 되는 이유는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②
- ① 오답: 두 경우 모두 비트 폭은 8비트로 같고 각 비트도 바뀌지 않습니다.
- ② 정답: 비트열의 의미는 저장된 패턴만이 아니라 적용한 자료형과 해석 규칙까지 알아야 결정됩니다.
- ③ 오답: 부호 없는 방식도 최상위 비트를 포함한 여덟 비트를 모두 사용하되 크기값으로 해석합니다.
- ④ 오답: 비트 순서를 재배열하지 않으며 최상위 비트의 가중치와 음수 해석 규칙이 달라집니다.
2. 4바이트를 비트 수로 바르게 환산한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
- ① 오답: 바이트 수를 그대로 비트 수로 읽어 1바이트=8비트 관계를 누락했습니다.
- ② 오답: 한 바이트의 비트 수만 계산하고 네 바이트를 반영하지 않았습니다.
- ③ 오답: 두 바이트에 해당하는 값으로 묶음 수를 절반만 적용했습니다.
- ④ 정답: 1바이트가 8비트이므로 4×8=32비트입니다.
3. 101.10012의 10진수 값은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③
- ① 오답: 2⁻¹ 자리의 1을 0.5가 아닌 더 작은 자릿값으로 처리한 결과입니다.
- ② 오답: 마지막 2⁻⁴ 자리의 1이 더하는 0.0625를 빠뜨렸습니다.
- ③ 정답: 정수부 5에 2⁻¹과 2⁻⁴의 값 0.5+0.0625를 더합니다.
- ④ 오답: 이진 소수 자리를 10진 소수의 9처럼 읽어 자릿값 원리를 적용하지 않았습니다.
4. 10진 정수 60을 2진수로 바꾸는 절차로 옳은 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①
- ① 정답: 정수부는 목표 기수로 나눈 나머지를 낮은 자리부터 얻으므로 역순으로 출력합니다.
- ② 오답: 반복 곱셈과 정방향 읽기는 10진 소수부를 바꾸는 절차입니다.
- ③ 오답: 목표가 2진수이므로 2로 나누어야 하며 몫이 0이 될 때까지 반복해야 합니다.
- ④ 오답: BCD는 10진 각 자리를 따로 부호화하므로 정수 전체의 순수 이진 표현과 다릅니다.
5. 8비트 2의 보수 정수와 8비트 부호화-크기 정수의 범위를 비교한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③
- ① 오답: 부호화-크기는 +0과 -0 두 패턴을 사용해 -128을 담을 패턴이 남지 않습니다.
- ② 오답: 음수 쪽 한 값을 더 표현하는 방식은 2의 보수이며 두 범위를 뒤바꿨습니다.
- ③ 정답: 2의 보수는 0이 하나라 -128까지, 부호화-크기는 양·음 대칭으로 -127까지 표현합니다.
- ④ 오답: 이 범위는 8비트 부호 없는 정수에 해당하고 두 방식은 최상위 비트를 부호와 연결합니다.
6. 8비트 2의 보수 10001101의 10진수 값은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②
- ① 오답: 10001101의 부호 없는 값 141에 음수 부호만 붙인 것은 2의 보수 해석이 아닙니다.
- ② 정답: 최상위 비트가 1이며 부호 없는 값 141에서 256을 빼면 -115입니다.
- ③ 오답: 비트 반전과 1 더하기로 얻은 크기는 115이지만 원래 최상위 비트가 1이므로 음수입니다.
- ④ 오답: 모든 비트를 크기로 읽은 부호 없는 해석이며 문제에서 지정한 2의 보수를 적용하지 않았습니다.
7. 60.6875를 강의의 단정도 부동소수점 필드로 표현할 때 저장되는 지수 비트는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
- ① 오답: 정규화 지수 5만 이진수로 쓰고 단정도의 바이어스 127을 더하지 않았습니다.
- ② 오답: 바이어스 127만 저장한 값으로 실제 지수 5를 반영하지 않았습니다.
- ③ 오답: 가수 비트 일부와 지수 필드를 혼동한 패턴입니다.
- ④ 정답: 1.111001011×2⁵이므로 저장 지수는 5+127=132=10000100₂입니다.
8. “유니코드 문자는 각각 반드시 한 개의 16비트 값으로 저장된다”는 설명을 고쳐 쓴 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
- ① 오답: ASCII 패리티는 전송 오류 검사와 관련된 예이며 세계 문자용 코드 공간을 만드는 유니코드와 목적이 다릅니다.
- ② 오답: BCD는 각 10진 숫자를 4비트로 나타내는 수 표현이고 유니코드는 문자를 코드값에 대응시킵니다.
- ③ 오답: 문자 코드가 배정하는 것은 추상 문자의 코드값이며 화면에 그릴 글꼴 이미지를 직접 저장하는 규칙이 아닙니다.
- ④ 정답: 현재 유니코드는 16비트에 한정되지 않고 여러 인코딩 형식으로 같은 코드 공간을 나타냅니다.
9. 10진수 295를 BCD로 올바르게 나타낸 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①
- ① 정답: 2, 9, 5를 각각 4비트 0010, 1001, 0101로 바꾸어 순서대로 연결합니다.
- ② 오답: 세 묶음이 1, 2, 7을 뜻해 원래의 각 10진 자릿값과 다릅니다.
- ③ 오답: 첫 묶음 0100은 2가 아니라 4를 나타냅니다.
- ④ 오답: 이는 295 전체를 하나의 이진수로 바꾼 값이며 각 10진 자리를 따로 부호화하는 BCD가 아닙니다.
10. 8비트 문자열 11111100을 해석하려 할 때 가장 먼저 확인할 정보는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③
- ① 오답: 1의 개수는 패리티 검사에는 쓰일 수 있지만 비트열의 데이터 의미를 결정하지 않습니다.
- ② 오답: 2의 보수라는 조건이 있을 때만 -4이며 부호화-크기에서는 -124처럼 다른 값이 됩니다.
- ③ 정답: 같은 패턴도 부호 없는 정수, 여러 부호 표현 또는 문자 코드에서 다르게 해석되므로 규칙 식별이 우선입니다.
- ④ 오답: 비트 폭만으로 데이터가 문자라는 사실이나 적용할 문자 코드가 자동 결정되지는 않습니다.
참고 자료와 작성 기준
이 글은 해당 차시 강의자료를 바탕으로 학습 목적에 맞게 재구성한 비공식 학습자료입니다. 진법 변환, 정수·실수의 비트 해석, 문자 코드의 구분과 예제 계산은 학습자가 과정을 직접 재현할 수 있도록 구성하고 검토했습니다.
- 작성·편집: 올에이클래스 학습연구팀
- 주요 근거: 한국방송통신대학교 컴퓨터과학과, 컴퓨터과학개론 제2강 「컴퓨터와 데이터 (2)」 강의자료(2024)
- 자료 범위: 데이터와 정보, 진법과 변환, 정수·실수 표현, ASCII·유니코드·EBCDIC·BCD
- 보충 자료: Unicode Consortium, UTF-8·UTF-16·UTF-32 FAQ(확인일: 2026-09-06)
- 편집 원칙: 올에이클래스 편집 정책
- 최종 내용 검토: 2026-09-06
댓글
댓글 쓰기