Master Piece of jun/컴퓨터구조

Type Casting과 Type Punning의 차이

JUNFUTURE 2026. 2. 25. 11:04

Cast (형변환): "데이터의 의미를 유지하며 형태를 바꿈"

Cast는 데이터를 다른 타입으로 바꾸되, 그 값(Value)의 의미가 유지되도록 비트를 재구성하는 과정

  • 동작: 컴퓨터가 CPU 연산을 통해 비트 패턴을 새로 만듬
  • 예시: 정수 1을 실수 1.0으로 캐스팅할 때.
    • 정수 1: 0x00000001
    • 실수 1.0: 0x3f800000 (IEEE 754 방식)

=> 비트 패턴이 완전히 달라졌지만, 인간이 읽는 '값'은 여전히 1

Punning (타입 퍼닝): "비트는 그대로 두고 해석만 바꿈"

Punning은 메모리에 저장된 비트 패턴을 단 1비트도 건드리지 않고, 그것을 바라보는 타입만 바꿔서 읽는 기법

  • 동작: 추가적인 CPU 연산(번역) 없이, 메모리 주소에 있는 값을 그대로 가져와 다른 타입으로 우깁니다.
  • 예시: 정수 1065353216 (0x3f800000)이 들어있는 메모리를 실수 타입으로 퍼닝할 때.
    • 메모리: 0x3f800000
    • 결과: 1.0이라는 실수

=> 메모리 내부 비트 패턴은 똑같지만, 해석된 '값'은 완전히 달라짐