스위프트에서는 타입을 정의하는 데 사용할 수 있는 몇 가지 자료형을 미리 제공한다.
오늘은 스위프트의 기본 자료형에 대해 정리해 볼 것이다
1. Int
Int는 정수를 뜻하는 Integer라는 영어 단어의 줄임말로, 부호 있는 정수값을 저장하는데 사용되는 자료형이다.
이 자료형을 사용하여 [ 0, 1, 2, 3, 4, 5 ... -1, -2, -3, -4, -5 ... ] 등 마이너스 범위의 정수부터 플러스 범위의 정수값까지 모두 저장할 수 있다.
📝 일반적으로 사용하는 대부분의 정수값을 저장할 수 있는 자료형으로 생각하면 될거같당
Int 타입이 저장할 수 있는 정수값의 범위에는 제한이 있는데 이 제한은 컴퓨터의 CPU 사양에 따라 결정된다.
가령 8bit의 CPU를 가진 컴퓨터라면 2^8인 256개의 값을 저장할 수 있다.
이를 정수 범위로 환산하여 계산하면 Int 타입이 저장할 수 있는 값은 -128부터 127까지다.
📝 아래는 -128까지인데 왜 위에는 127개일까?
0은 양수도 음수도 아니지만 편의상 양의 범위에 두고 있기 때문에 양의 정수 시작값은 0부터 !!
따라서 양의 정수 범위의 끝은 0 ~ 127이 되고, 음의 정수 시작은 -1 ~ -128이다.
방금 CPU 사양에 따라 결정된다고 했는데 사실 8bit 범위만 사용하는 Int의 경우 스위프트에서는 서브 자료형이 별도로 정의되어 있다. 바로 Int8이다. Int를 8bit 크기로 사용하겠다는 의미이다. 유사한 자료형으로 Int16, Int32, Int64도 있다.
각각 16, 32, 64bit의 Int 타입을 의미한다.
자료형 | 저장할 수 있는 값의 범위 | 크기 |
Int8 | 127 ~ -128 | 8 bit |
Int16 | 32,767 ~ -32,768 | 16 bit |
Int32 | 2,147,483,647 ~ -2,147,483,648 | 32 bit |
Int64 | 9,223,372,036,854,775,807 ~ -9,9,223,372,036,854,775,808 | 64 bit |
Int 자료형에 붙은 숫자가 커질수록 표현할 수 있는 수의 범위도 점점 늘어난다.
그것도 일정하게 커지는 것이 아니라 2^n배 크기로 증가한다.
큰 단위의 자료형을 사용할수록 큰 값을 저장할 수 있지만, 그만큼 메모리 소모 또한 늘어나기 때문에 실제로 코딩할 때에는 저장할 값의 범위에 맞는 적절한 타입을 선택해야 한다.
📝 Int8, Int16 등을 직접 지정해서 쓰면 되는데, 굳이 Int 자료형이 필요한가? 라는 생각이 든다면
Int는 해당 컴퓨터의 CPU 비트크기에 맞추어 자동으로 크기가 변화한다고 한다.
Int 타입으로 변수나 상수를 선언하면 CPU 환경에 따라 변경해야할 코드를 줄일 수 있다고 한다.
2. UInt
UInt는 Unsigned Integer를 줄인 단어로 부호가 없는 정수를 의미한다.
Int처럼 정수값을 저장하는 데 사용되는 자료형이지만 Int가 양수부터 음수까지를 모두 저장할 수 있는 반면 UInt는 양수만 저장할 수 있다는 차이가 있다.
📝 Int를 쓰면 되는데 UInt를 쓰는 이유가 뭔가?
UInt는 마이너스 범위의 정수를 지정할 수 없는 대신, 플러스 범위의 정수에 대해서는 Int보다 두 배 큰 범위까지 저장할 수 있다
UInt에도 Int처럼 8비트, 16비트, 32비트, 64비트로 구분된 서브 자료형이 있다.
자료형 | 저장할 수 있는 값의 범위 | 크기 |
UInt8 | 0 ~ 255 | 8 bit |
UInt16 | 0 ~ 65,535 | 16 bit |
UInt32 | 0 ~ 4,294,967,295 | 32 bit |
UInt64 | 0 ~ 18,446,744,073,709,551,615 | 64 bit |
UInt는 0부터 플러스 범위의 정수를 저장하기 때문에 저장할 수 있는 최소값은 서브 자료형의 종류와 상관없이 모두 0이다.
서브 자료형별 최대값은 우리가 먼저 알아보았던 Int 서브 자료형의 2배씩이다.
📝 중간에 0이 포함되 있으니 정확한 수식은 아래와 같음
( Int 서브 자료형의 최대값 x 2) + 1
Int8의 최대값은 127이지만 UInt8의 최대값은 254가 아닌 255이기 때문에, 나머지도 동일
📝 요즘 1편 2편 만드는게 취미인가.. 설명하려고 정리해보니 오래 걸리고 그러네..
📝 2편 업로드 완료!!
Swift 기본 자료형 2
이어서 나오는 자료형 2탄 이전 글을 안 보고 왔으면 보고 오는걸 추천 !! Swift 기본 자료형 1 스위프트에서는 타입을 정의하는 데 사용할 수 있는 몇 가지 자료형을 미리 제공한다. 오늘은 스위프
sheep1sik.tistory.com
'메모장' 카테고리의 다른 글
Swift 타입 추론과 타입 어노테이션 (1) | 2023.03.06 |
---|---|
Swift 기본 자료형 2 (1) | 2023.03.06 |
Swift 변수와 상수 2 (2) | 2023.03.02 |
Swift 변수와 상수 1 (1) | 2023.03.02 |
Swift 반복문 [ while 편 ] (5) | 2023.02.28 |