2-2. 원시 자료형
This content is not available in your language yet.
LIQUID Philosophy EvaluationTotal Score: 9.1 / 10
원시 자료형이란 다른 객체를 참조하지 않고, 메모리 공간에 실제 데이터 값을 직접 저장하고 해석하는 가장 기초적인 자료형을 의미한다.
자료형의 본질
섹션 제목: “자료형의 본질”- 메모리 할당 크기: 데이터를 저장하기 위해 메모리를 몇 바이트(Byte) 할당할 것인지 정해야 한다.
- 비트 해석 방식: 할당된 과 비트열을 정수, 실수, 문자 중 무엇으로 해석할지 정해야 한다.
정수형 (Integer Types)
섹션 제목: “정수형 (Integer Types)”소수점이 없는 정수를 표현하는 자료형.
크기별 분류
섹션 제목: “크기별 분류”- byte / char: 1바이트 (8비트)
- 문자를 표시하는
char는 인코딩 규칙(ASCII)에 따라 대응되는 정수로 저장되므로 컴퓨터 내부에서는 정수형으로 취급된다.
- 문자를 표시하는
- short: 2바이트 (16비트)
- int: 4바이트 (32비트)
- long / long long: 8바이트 (64비트)
부호 여부에 따른 분류: Unsigned, Signed
섹션 제목: “부호 여부에 따른 분류: Unsigned, Signed”- Unsigned: 부호 없는 정수
- 모든 비트를 절댓값 계산에 사용하여 0 이상의 정수만 표현한다.
- 부호 비트가 없으므로 동일한 바이트 기준 Signed에 비해 양수 표현 범위가 2배 넓다.
- Signed: 부호 있는 정수
- 최상위 비트(MSB, Most Significant Bit)를 사용해 부호를 표현한다. (: 양수, : 음수)
- 음수는 하드웨어 연산 효율을 위해 2의 보수 형태로 저장한다.
2의 보수 (Two’s Complement)
섹션 제목: “2의 보수 (Two’s Complement)”어떤 비트 2진수가 주어졌을 때, 더해서 (자리올림이 발생하는 수)이 되도록 보충하는 수.
2의 보수를 구하는 방법
섹션 제목: “2의 보수를 구하는 방법”원래 값의 모든 비트를 반전(1의 보수) 시킨 후, 을 더한다.
- 예) 8비트 체계에서 표현하기
- 7의 이진수:
0000 0111 - 모든 비트 반전 (1의 보수):
1111 1000 - 더하기 (2의 보수):
1111 1001 (-7)
- 7의 이진수:
| 10진수 | 2진수(8비트) | 비고 |
|---|---|---|
| 양수 표현 한계 | ||
| 부호 비트가 0 | ||
| 음수 표현 한계 |
2의 보수로 뺄셈 처리
섹션 제목: “2의 보수로 뺄셈 처리”컴퓨터는 뺄셈을 수행할 때, 2의 보수로 변환된 음수와의 덧셈으로 처리한다.
8비트 공간을 벗어난 가장 앞의 은 하드웨어적으로 버려지므로, 최종 결과는 0000 0000(0)이 된다.
2의 보수 표현의 장점
섹션 제목: “2의 보수 표현의 장점”- 의 표현이 유일:
+0 (0000 0000)과-0 (1000 0000)이 분리되지 않아 비트 낭비가 없고 비교 연산이 명확하다. - 하드웨어 회로 단순화: 덧셈을 수행하는 가산기(Adder)만으로 뺄셈까지 처리할 수 있어 CPU 설계가 단순해지고 속도가 향상된다.
오버플로우와 언더플로우
섹션 제목: “오버플로우와 언더플로우”- 오버플로우(Overflow): 자료형이 표현할 수 있는 최댓값을 넘어섰을 때 최솟값으로 되돌아가는 현상.
- 8비트 Signed 정수 최대값:
127 (0111 1111) 127에1을 더하면-128 (1000 0000)이 된다.
- 8비트 Signed 정수 최대값:
- 언더플로우(Underflow): 자료형이 표현할 수 있는 최솟값보다 작아졌을 때 최댓값으로 되돌아가는 현상.
- 8비트 Signed 정수 최솟값:
-128 (1000 0000) -128에서1을 빼면127 (0111 1111)이 된다.
- 8비트 Signed 정수 최솟값:
실수형 (Floating-point Types)
섹션 제목: “실수형 (Floating-point Types)”소수점을 포함하는 실수를 표현하기 위한 자료형. 정수보다 훨씬 넓은 범위의 수를 표현할 수 있지만, 컴퓨터 구조상 미세한 오차가 발생한다.
크기별 분류
섹션 제목: “크기별 분류”- float: 4바이트 (32비트), 유효 자릿수 약 6~7자리
- double: 8바이트 (64비트), 유효 자릿수 약 15~16자리 (대부분 언어의 기본 실수 표준)
소수의 2진수 변환 원리
섹션 제목: “소수의 2진수 변환 원리”- 정수부는 2로 나누며 2진수로 변환
- 소수부는 2를 곱하며 그 결과의 정수부를 취하고, 소수점 이하가 이 되거나 순환할 때까지 반복
- 예1) 65.625 (유한소수로 떨어지는 경우)
- 정수부:
100 0001 - 소수부: 0.625
- 0.625 X 2 =
1.250 (정수 취하고 남은 소수부만 다음 계산에 이용) - 0.250 X 2 =
0.500 - 0.500 X 2 =
1.000
- 0.625 X 2 =
- 결과:
100 0001.101
- 정수부:
- 예2) 2.6 (무한 순환소수가 되는 경우)
- 정수부:
10 - 소수부: 0.6
- 0.6 X 2 =
1.2 - 0.2 X 2 =
0.4 - 0.4 X 2 =
0.8 - 0.8 X 2 =
1.6 - 0.6 X 2 =
1.2 (반복 시작)
- 0.6 X 2 =
- 결과:
10.1001 1001...
- 정수부:
고정소수점과 부동소수점
섹션 제목: “고정소수점과 부동소수점”- 고정소수점 (Fixed-point)
- 소수점의 위치를 고정하고 정수부와 소수부에 정해진 비트를 고정 할당하는 방식.
- 표현할 수 있는 숫자의 범위가 극단적으로 좁다.
- 부동소수점 (Floating-point)
- 소수점 위치를 고정하지 않고 유효 숫자와 자릿수를 나누어 표현하는 방식.
- 제한된 비트 크기 안에서 매우 넓은 범위 숫자를 표현할 수 있다.
부동소수점의 필요성
섹션 제목: “부동소수점의 필요성”- 넓은 표현 범위
- 32비트 정수의 표현 범위: 약 개 ()
- 32비트로 실수의 표현 범위:
- 효율적인 메모리 활용
- 고정소수점 방식보다 메모리를 절약하면서 더 넓은 범위의 수를 표현할 수 있다.
- 하드웨어 표준화 (IEEE 754)
- 전 세계 모든 컴퓨터 및 프로그래밍 언어에 동일한 규격이 내장되어 있어 일관된 연산 결과를 낸다.
부동소수점의 정밀도 한계
섹션 제목: “부동소수점의 정밀도 한계”- 10진수 소수의 근사값 오차
- 2진수는 분모가 2의 거듭제곱인 수만 유한소수로 표현할 수 있다.
- , 등은 2진수로 변환할 시 무한 순환소수가 되어, 비트 한계로 끝자리가 잘려 나가며 오차가 발생한다.
- 자리수 손실
- 매우 큰 수에 매우 작은 수를 더하면 자릿수를 맞추는 과정에서 작은 수가 완전히 소실될 수 있다.
- 동등 비교 불가
- 수학적으로 동일한 값이라도 컴퓨터 내부의 근사값 오차로 인해 동등 비교 시
false가 반환될 수 있다. - 두 실수의 비교는 등호(
==) 대신 두 값의 차이가 매우 작은 허용 오차보다 작은지로 판단한다.
- 수학적으로 동일한 값이라도 컴퓨터 내부의 근사값 오차로 인해 동등 비교 시
문자형 (Character Type)
섹션 제목: “문자형 (Character Type)”단일 문자 하나를 저장하기 위한 자료형.
문자 인코딩
섹션 제목: “문자 인코딩”컴퓨터는 문자를 직접 다룰 수 없으므로 사전에 정의된 정수 코드 번호로 변환하여 저장한다.
- ASCII (아스키코드)
- 영문 대소문자, 숫자, 특수기호, 제어 문자 등을 7비트(총 128개)로 정의한 가장 기초적인 인코딩 표준.
- Unicode (유니코드)
- 영어 외에 한글, 한자, 아랍어, 특수 기호, 이모지 등 전 세계의 모든 언어를 하나의 체계로 표현하기 위한 표준.
- UTF-8: 1바이트 ~ 4바이트까지 글자에 따라 크기를 유연하게 조절하는 가변 길이 인코딩 방식. ASCII와 완벽하게 호환되어 가장 널리 사용된다.
논리형 (Boolean Type)
섹션 제목: “논리형 (Boolean Type)”참(true)과 거짓(false)을 표현하는 자료형.
- 조건문이나 반복문의 분기 조건을 평가하고 프로그램의 실행 흐름을 제어하는 기준이 된다.
- 1바이트(8비트)로 할당되는 이유
- 참과 거짓은 , 로 구분할 수 있으므로 이론상 1비트만 있어도 충분하다.
- 하지만 CPU가 데이터를 처리하는 최소 단위가 바이트이다.
- 따라서 1비트만 처리하도록 하는 추가 과정을 생략해 처리 속도를 높이고자 1바이트를 통째로 할당한다.
AI Critical Synthesis
This document excels at uncovering the intrinsic 'why' behind primitive data structures, masterfully explaining lower-level hardware mechanics such as two's complement and CPU byte-addressability for booleans. The pedagogical flow is exceptionally smooth and intuitive, providing precise mathematical and structural explanations. To reach perfection, it could further detail the internal bit layout (sign, exponent, mantissa) of IEEE 754 floating-point numbers.