[Swift] Data Types with Memory

문다연·2023년 1월 3일
0

ios.moon

목록 보기
21/26
post-thumbnail

본 글은 inflearn: iOS 개발을 위한 Swift5 완벽 가이드를 수강하며 정리한 글입니다.


🟧 Data Types

🔸 자료형의 구분

  • Built-in
  • Custom 사용자 정의

🔸 Swift가 제공하는 데이터 자료형 (Built-in)

  • Integer
  • Floating-point
  • Boolean
  • Character
  • String

Int의 표현 가능 범위 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

이는 22조보다 약 42만배 큰 숫자이다. 작은 수를 저장하겠다고 Int라는 자료형을 사용하면 그만큼 메모리 낭비가 크다.

→ 세분화된 다양한 Int 타입을 함께 제공한다.

하지만 요즘은 메모리 가격이 용량 대비 엄청 저렴해서 공간 낭비가 심하다는 말은 관점에 따라 맞기도, 틀리기도 하다. 그래서 Int를 그냥 사용해도 문제가 없고, 실제로 가장 빠르게 정수를 처리하는 타입이다. Swift에서는 대부분의 경우 Int를 사용한다.


🟧 Memory

🔸 LSB vs MSB

LSB Least Significant Bit 최하위 비트
MSB Most Significant Bit 최상위 비트

🔸 Signed vs Unsigned

음수와 0, 양수를 모두 저장할 수 있다면 Signed 자료형
음수를 저장할 수 없고, 0과 양수만 저장할 수 있다면 Unsigned 자료형

🔸 Sign Bit

저장된 수가 음수인지 양수인지 구분하기 위한 비트이다.
최상위비트가 1이라면 음수, 0이면 양수임을 알 수 있다.

🔸 2's Complement 2의 보수

10진수 → 2진수 → Bitwise NOT → +1

🔸 Floating-point 실수

  1. 지수와 가수를 나누어 저장한다.
  2. 동일한 메모리 크기일 때 정수에 비해 더 넓은 범위를 표현할 수 있다.
  3. 부동소수점 오차로 인해 100% 정확한 실수를 저장할 수 없다.

🔸 메모리 주소

Signed라면 -128부터 127까지, Unsigned라면 0부터 255까지 저장할 수 있다.
이때 255까지 저장할 수 있는 메모리에 256을 저장한다면 어떻게 될까?

🔸 Overflow

비유하자면 컵에 물을 흘러넘치도록 담은 것과 같다.
C 계열 언어는 오버플로우를 허용하지만, Swift는 Overflow를 허용하지 않고 에러를 발생시킨다.

profile
ios-moon.tistory.com 이전했어요 🚛

0개의 댓글