개발이야기/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