ASCII

 
print(ord('a'))
print('a')
print(97)
print(hex(97))
97
a
97
0x61

Python 인터프리터에서 위와 같이 코드를 입력했을 때 컴퓨터는 ‘a’에 대해서는 ‘a’라고 콘솔창에 출력하고 ‘a’를 의미하는 수 97에 대해선 97로 표현한다. 컴퓨터 입장에선 내가 ‘a’로 입력하던지, 97로 입력하던지 모두 97이라는 number로 보일텐데 어떻게 출력할 때 구분 지을 수 있는지가 궁금하였다.

답변은 StackOverFlow 에서 얻을 수 있었다.

핵심은 compiler였다. compiler를 통해 특정 메모리 주소의 값에 대한 데이터 Type에 대한 코드를 어셈블리 형태로 작성한다고 한다.

#include <stdio.h>

int main()
{
    int x; 
    x = 9;
    char* y;
    y = &x;
    printf("\"%s\" \"%d\"\n", y, x);
    printf("%p\n%p", y, &x);
    return 0;
}
"       " "9"
0x7ffd401ce68c
0x7ffd401ce68c

위 코드 출력을 보면 알 수 있듯이, 다른 데이터 타입을 가진 변수가 있어도 하나의 메모리 주소를 똑같이 쓸 수 있다. 처음엔 memory 영역에 따라 int, char 등을 저장하는 것이 다르겠거니 했는데 전혀 관계 없었다.