개발이야기/CSAPP
[CSAPP] 정보의 해석
Study & Stack
2025. 5. 29. 23:27
728x90
🧾 2.2 정보 해석 (Interpreting Information)
📌 같은 비트, 다른 의미
- 컴퓨터는 같은 비트값도 해석 방식에 따라 전혀 다르게 사용합니다.
- 예시: 0x41
- 문자로 해석: 'A' (ASCII)
- 숫자로 해석: 65
🔡 문자열은 어떻게 저장될까?
c
복사편집
const char* m = "12345";
- 실제 메모리에는 다음처럼 저장됨
[0x31, 0x32, 0x33, 0x34, 0x35, 0x00]
→ 마지막 0x00은 문자열의 끝을 나타내는 널 문자 (\0)
🌐 ASCII vs Unicode
특징ASCIIUnicode (UTF-8 등)
문자 수 | 128개 (영문자 위주) | 100,000+ (전세계 문자 지원) |
크기 | 1바이트 | 1~4바이트 (가변) |
사용 예시 | C 언어 문자열 | 웹사이트, Java, 파이썬 등 |
- 예: 'A' = 0x41, '가' = 0xAC00
- UTF-8은 ASCII와 호환되며 국제화를 위한 필수 기술입니다.
🧮 2.3 부울 대수 (Boolean Algebra)
💡 부울 대수란?
- 0과 1로 이루어진 값에 대해 연산을 수행하는 수학 체계입니다.
- 논리 연산을 수학적으로 다루기 위해 사용됩니다.
🧰 주요 연산자 정리
연산자의미예시 (a=1, b=0)결과
~a | NOT | ~1 | 0 |
a & b | AND | 1 & 0 | 0 |
`a | b` | OR | `1 |
a ^ b | XOR | 1 ^ 0 | 1 |
🔢 비트 벡터 응용
- 여러 비트(예: 8비트)를 동시에 다룰 수 있어요.
- 예:
-
cpp복사편집a = 01101001 // A = {0,3,5,6} b = 01010101 // B = {0,2,4,6} a & b = 01000001 → A ∩ B = {0,6} a | b = 01111101 → A ∪ B = {0,2,3,4,5,6}
🧑💻 마스크(mask)란?
- 특정 비트만 선택하거나 무시하기 위해 사용되는 비트 패턴
- 예: x & 0xFF → 하위 8비트만 추출
c
복사편집
int x = 0x89ABCDEF; int result = x & 0xFF; // result = 0x000000EF
🎨 색상 표현 (RGB 예시)
RGB색상비트
0 | 0 | 0 | Black | 000 |
1 | 0 | 0 | Red | 100 |
0 | 1 | 0 | Green | 010 |
0 | 0 | 1 | Blue | 001 |
1 | 1 | 0 | Yellow | 110 |
1 | 1 | 1 | White | 111 |
✅ 초보자를 위한 팁
- &와 &&의 차이:
- & : 비트 연산자, 0과 1 각각 비교
- &&: 논리 연산자, 참/거짓 전체 평가
- a ^ a = 0, a ^ 0 = a 같은 성질은 XOR 연산에서 매우 유용
- 마스크를 쓸 때 0xFF, 0xF0 같은 16진수 표현이 자주 사용됨
728x90