본문 바로가기

SWIFT 공식문서 문법 알아보기/01.The Basics

Swift 공식문서 해설 The Basics - Integer, Floating-Point Numbers (1-4)

정수 (Intergers)

정수는 숫자 전체에 소수점이 없는 42, -23과 같은 숫자입니다. 정수는 부호가 있는 것(양수, 0, 음수)과 부호가 없는(양수, 0) 모두를 포함합니다.  스위프트는 8, 16, 32, 64비트 형태로 지원합니다. 부호 없는 8비트 정수형은 UInt8, 부호 있는 32비트 정수형은 Int32로 불립니다. 모든 타입과 마찬가지로 첫 글자는 대문자로 시작합니다. 

 

*부연설명

공식문서에서는 헷갈리게 적어놓았지만 정수형 변수는 (0, 1, 2, 3, 4, 5, 6, 7, 8, -1, -2, -3, -4, -5, -6 ,-7 ,-8) 소수점이 아닌 양수, 음수, 0을 지칭합니다. Uint는 뒤에 자세히 설명이 나옵니다

정수 범위 (Intergers Bounds)

min, max를 속성을 이용하여 각 정수의 최댓값과 최솟값을 확인해 볼 수 있습니다.

 

let minValue = UInt8.min // minValue is equal to 0, and is of type UInt8
let maxValue = UInt8.max // maxValue is equal to 255, and is of type UInt8

 

위의 예제는 UInt8, Uint16, UInt32, Uint64, Int8, Int16, Int32, Int64와 같이 같은 타입들의 범위를 확인하기 위해 동일하게 사용이 가능합니다.

 

*부연설명

정수의 값은 무한으로 설정할 수가 없습니다. 각자의 컴퓨터를 보면 32비트, 64비트 형으로 나누어질 것입니다. 여기서 말하는 32, 64는 컴퓨터가 처리할 수 있는 범위를 나타낸 것입니다. 위의 예처럼 8비트를 가진 컴퓨터라면 2⁸ =  256개의 값을 저장할 수 있습니다.

Int는 양수와 음수를 모두 포함하기 때문에 -128 ~ +127 (0도 포함하며 0은 양수로 취급합니다)까지 저장이 가능합니다. 이와 같이 계산한다면 아래 표 같은 결괏값이 나옵니다.

정수 범위
Int8 -128 ~ 127
Int16 -32768 ~ 32767
Int32 -2147483648 ~ 2147483647
Int64 -9223372036854775808 ~ 9223372036854775807

Int8, Int16, Int32, Int64와 Int 형의 차이는 Int8, Int16, Int32, Int64의 경우 범위 값이 고정이 되어버리지만 그냥 Int를 사용할 경우 사용하는 CPU 실행환경에 따라 범위를 조정해 줍니다. CPU환경에 따라 낭비되는 범위를 줄여줄 수가 있습니다. 

Int

대부분의 경우에 특별한 크기의 UInt8, Uint16, UInt32, Uint64, Int8, Int16, Int32, Int64 코드를 사용할 필요는 없습니다. 스위프트는 Int라는 타입을 통해 현재 해당하는 플랫폼의 맞는 크기를 제공해주기 때문입니다.

 

  • On a 32-bit platform, Int is the same size as Int32.
  • On a 64-bit platform, Int is the same size as Int64.

 

특별한 인트 크기(UInt8, Uint16, UInt32, Uint64, Int8, Int16, Int32, Int64)를 정해서 사용하기보다는 Int 타입을 사용해주는 것이 좋습니다. Int 타입의 사용은 코드의 일관성과 정보의 상호 처리에서도 도움을 줍니다. 32비트 플랫폼에서도 Int 타입은 -2,147,483,648 ~ 2,147,483,647의 범위를 저장할 수 있고 많은 정수 범위를 사용하기 충분합니다.

UInt

스위프트는 현재 플랫폼 크기와 같은 부호 없는 정수 UInt도 제공합니다.

 

  • On a 32-bit platform, UInt is the same size as UInt32.
  • On a 64-bit platform, UInt is the same size as UInt64.

*부연설명

Uint의 경우에는 음수 범위는 저장할 수 없고 양수 범위만 저장할 수 있습니다. 보통 Int보다 2배의 양수 범위를 저장할 수 있습니다. 아래의 표로 비교해보면 확인할 수 있습니다.

정수 범위 정수 범위
Int8 -128 ~ 127 UInt8 0 ~ 255
Int16 -32768 ~ 32767 UInt16 0 ~ 65535
Int32 -2147483648 ~ 2147483647 UInt32 0 ~ 4294967295
Int64 -9223372036854775808 ~ 9223372036854775807 UInt64 0 ~ 18446744073709551615

Note

플랫폼 크기에 따라서 Uint의 경우 부호가 없는 정수가 필요할 때만 사용합니다.  이런 경우가 아니라도 부호가 없는 양수만 저장하는 경우라도 Int를 사용하는 게 좋습니다. 정수 값에 Int를 일관되게 사용하는 것은 다른 숫자 타입 유형 (UInt8, Uint16, UInt32, Uint64, Int8, Int16, Int32, Int64 > 각각 다르게 사용할 경우 변환의 과정이 생기니 Int로 일관성 있게 사용 권유)과의 변환을 피하고, 타입 안전, 타입 추론으로 일컫는 정수 타입의 추론과 코드의 정보 처리 상호운용에도 도움을 줍니다.

부동 소수점 숫자 (Floating-Point Numbers)

Floating-point numbers는 3.14159, 0.1, -273.15과 같이 분수로 구성되어있는 숫자들을 말합니다. 

Floating-point types는 정수 타입(Int) 보다 훨씬 넓은 범위를 표현할 수 있고 정수가 저장할 수 있는 것보다 더 크거나 작은 숫자를 저장할 수 있습니다. 스위프트는 2가지 의 부동 소수점 숫자를 제공합니다. 

 

  • Double represents a 64-bit floating-point number.
  • Float represents a 32-bit floating-point number.

*부연설명

위의 내용은 Float에는 Float32와 Float64가 존재하는데 Float = Float32이며 2배를 저장 가능한 Float64는 Double과 값이 같기 때문에 스위프트에서 Float32와 Float64를 따로 명칭 하지 않고 Float = Float32, Float32 = Double로 지칭합니다. 이를 타입 알리아스(Type Aliases)라고 표현하는데 이는 뒤에서 알아보실 수 있습니다.

 

https://iosbeginner.tistory.com/13

 

Swift 공식문서 해설 The Basics - Type Aliases, Booleans, Tuples (1-8)

타입 알리아스 (Type Aliases) 타입 알리아스는 존재하는 타입을 대체하는 이름을 대체 가능한 이름으로 정의합니다. typealias라는 키워드로 타입을 정의합니다. 타입 알리아스는 외부 소스로부터 특정 크기의 작..

iosbeginner.tistory.com

Note

Double타입은 적어도 15자리 소수점을 표현할 수 있지만 반면에 Float타입은 6자리 정도의 소수점을 표현할 수 있습니다. 적절한 부동형 소수점은 작업해야 하는 값, 특성, 범위 등에 따라 다릅니다. 2개의 유형중 하나가 적합한 상황에서는 Double 이 선호됩니다.