Cast (형변환): "데이터의 의미를 유지하며 형태를 바꿈"
Cast는 데이터를 다른 타입으로 바꾸되, 그 값(Value)의 의미가 유지되도록 비트를 재구성하는 과정
- 동작: 컴퓨터가 CPU 연산을 통해 비트 패턴을 새로 만듬
- 예시: 정수 1을 실수 1.0으로 캐스팅할 때.
- 정수 1: 0x00000001
- 실수 1.0: 0x3f800000 (IEEE 754 방식)
=> 비트 패턴이 완전히 달라졌지만, 인간이 읽는 '값'은 여전히 1
Punning (타입 퍼닝): "비트는 그대로 두고 해석만 바꿈"
Punning은 메모리에 저장된 비트 패턴을 단 1비트도 건드리지 않고, 그것을 바라보는 타입만 바꿔서 읽는 기법
- 동작: 추가적인 CPU 연산(번역) 없이, 메모리 주소에 있는 값을 그대로 가져와 다른 타입으로 우깁니다.
- 예시: 정수 1065353216 (0x3f800000)이 들어있는 메모리를 실수 타입으로 퍼닝할 때.
- 메모리: 0x3f800000
- 결과: 1.0이라는 실수
=> 메모리 내부 비트 패턴은 똑같지만, 해석된 '값'은 완전히 달라짐
'Master Piece of jun > 컴퓨터구조' 카테고리의 다른 글
| ISA(Instruction Set Architecture)와 Machine Dependent (3) | 2023.01.26 |
|---|