데이터 타입에 관한 배경지식

2024년 5월 16일 by구지원
thumbnail_1-2.png

메모리와 데이터

컴퓨터는 모든 데이터를 0 또는 1로 바꿔 기억합니다!
0 또는 1만 표현할 수 있는 하나의 메모리 조각을 비트(bit) 라고 하는데요.

메모리에는 매우 많은 비트들로 데이터들이 구성되어 있는데, 이 비트들은 각자 고유한 식별자가 있어 위치를 확인할 수 있습니다.

✅   그러면 컴퓨터는 비트 단위로 데이터를 저장할까요?
정답은 X

몇 개씩 묶어 하나의 단위로 만든다면

  1. 표현할 수 있는 값도 늘어나고
  2. 해당 데이터가 어디있는지 찾는 검색 시간도 줄일 수 있습니다.

data_type [그림1 bit와 byte의 개념]

이런 고민의 결과로 바이트(byte) 라는 단위가 생겼습니다. 1byte = 8bit 로 구성되어 있으며,
1bit 마다 0 또는 1의 두 가지 값을 표현할 수 있어, 1byte는 2의 8승인 256개의 값을 표현할 수 있습니다.

C, Java와 같은 정적 타입 언어는 메모리의 낭비를 최소화하기 위해
데이터 타입별로 할당할 메모리 영역을 2바이트, 4바이트 등으로 나누어 정해놓았습니다.

data_type [그림2 타입별 byte의 크기 예시]

만약 사용자가 Java로 만들어진 프로그램에서 short형의 변수를 선언했는데, 2바이트 이상의 데이터를 넣었다면 어떤 일이 발생할까요?

네. 에러가 발생합니다 .^^.

data_type

이를 방지하기 위해 개발자들은 변수의 데이터 타입을 크게 선언하거나, 범위를 넘어갈 경우 형변환을 해주는 로직을 짜게됩니다.
꽤나 번거로운 작업이지만 메모리가 턱없이 부족한 과거 시절에는 .. 불가피한 선택이였죠 ..

하지만 우리의(?) 자바스크립트는 다릅니다.




메모리 용량이 과거보다 월등히 커진 상황에서 등장한 자바스크립트는 상대적으로 메모리 관리에 대한 압박에서 자유로워졌습니다.

  • 그래서 메모리 공간을 좀 더 넉넉하게 할당했습니다.
  • 숫자의 경우 정수형인지 부동소수형인지를 구분하지 않고 64비트(8바이트)를 확보합니다.
  • 덕분에 개발자들이 형변환을 걱정해야하는 상황이 많이 줄어들었습니다.

비트, 바이트와 같이 모든 데이터는 메모리 주솟값(memory address) 을 통해 서로 구분하고 연결할 수 있습니다.

식별자와 변수

보통 변수와 식별자를 혼용하는 경우가 많은데요.
제대로 짚고 넘어가봅시다!

구분설명
변수(variable)변할 수 있는 무언가 -> 무언가는 데이터를 의미하며 문자열, 객체, 배열 등 모두 데이터에 속합니다.
식별자(identifier)어떤 데이터를 식별하는데 사용하는 이름, 변수명

앞서 데이터 타입의 종류, 배경지식에 대해 배웠으니 이제 변수 선언과 데이터를 할당하는 방법에 대해 알아봅시다!

다음 글에서 계속 이어집니다. (1-3 변수 선언과 데이터 할당)