Kotlin의 정수, 실수 자료형
정수 자료형
정수 자료형은 양수, 음수, 0을 나타낸다. 코틀린의 정수 자료형은 부호가 있는 것과 부호가 없는 것으로 나눌 수 있다. 다음은 부호가 있는 정수 자료형을 정리한 표이다. 값의 범위에 따라 알맞은 정수 자료형을 사용하면 된다.
부호가 있는 정수 자료형
정수 자료형 | Long | 8바이트(64비트) | -2^63 ~ 2^63-1 |
Int | 4바이트(32비트) | -2^31 ~ 2^31-1 | |
Short | 2바이트(16비트) | -2^15 ~ 2^15-1 (-32,768 ~ 32,767) | |
Byte | 1바이트(8비트) | -2^7 ~ 2^7-1 (-128 ~ 127) |
정수를 표현할 때 숫자를 그냥 사용하면 10진수를 나타내지만, 접미사나 접두사를 사용하면 다음과 같이 2진수나 16진수로도 표현이 가능하다.
val exp01 = 123 // Int형으로 추론
val exp02 = 123L // 접미사 L을 사용해 Long형으로 추론
val exp03 = 0x0F // 접두사 0x를 사용해 16진 표기가 사용된 Int형으로 추론
val exp04 = 0b00001011 // 접두사 0b를 사용해 2진 표기가 사용된 Int형으로 추론
보통 숫자값은 Int로 추론되기 때문에 만약 더 작은 범위의 정수 자료형인 Byte나 Short를 사용하기 위해서는 직접 자료형을 명시해야 한다.
val exp08: Byte = 127 // 명시적으로 자료형을 지정(Byte)
val exp09 = 32767 // 명시적으로 자료형을 지정하지 않으면 Short형 범위의 값도 Int형으로 추론
val exp10: Short = 32767 // 명시적으로 자료형을 지정(Short)
부호가 없는(Unsigned) 정수 자료형
부호 없는 정수형 |
ULong | 8Bytes(64Bits) | 0 - 2^64- 1 |
UInt | 4Bytes(32Bits) | 0 - 2^32-1 | |
UShort | 2Bytes(16Bits) | 0 - 2^16(0 - 65535) | |
UByte | 1Bytes(8Bits) | 0 - 2^8(0 - 255) |
부호가 없는 자료형을 사용할 때는 다음과 같이 식별자를 사용해 할당할 수 있다.
val uint: UInt = 153u
val ushort: UShort = 65535u
val ulong: ULong = 46322342uL
val ubyte: UByte = 255u
실수 자료형
실수형 | Double | 8바이트(64비트) | 약 4.9E-324 - 1.7E+308(IEEE754) |
Float | 4바이트(32비트) | 약 1.4E-45 - 3.4E+38(IEEE754) |
실수도 자료형을 명시하지 않으면 Double 형으로 간주된다. 만약 Float 형으로 지정하고 싶다면 식별자 f 를 실수 옆에 붙여도 된다.
val exp01 = 3.14 // Double형으로 추론(기본)
val exp02 = 3.14F // 식별자 F에 의해 Float형으로 추론
부동 소수점
유한한 메모리 공간에 실수를 저장하기 위해 부동 소수점(floating-point) 방식을 사용한다.
부동 소수점 방식이란? 실수를 가수, 지수로 나누어 표현하는 방식이다.
위 그림은 일반 수학과 컴퓨터에서 부동 소수점을 표현하는 방식을 나타낸 것이다. 3.14에서 왼쪽으로 소수점을 2칸 이동하려면 e-2나 E-2를, 오른쪽으로 소수점을 2칸 이동하려면 e2나 E2를 붙이면 된다. 다음은 부동 소수점 방식으로 실수를 표현한 것이다.
val exp03 = 3.14E-2 // 왼쪽으로 소수점 2칸 이동, 0.0314
val exp04 = 3.14e2 // 오른쪽으로 소수점 2칸 이동, 314
Kotlin의 자료형 추론 법
다음은 자료형을 지정하지 않은 변수에 여러 정수를 대입한 것이다.
Ctrl + Shift + P 를 누르면 추론된 자료형을 볼 수 있다.
val num05 = 127 // Int형으로 추론
val num06 = -32768 // Int형으로 추론
val num07 = 2147483647 // Int형으로 추론
val num08 = 9223372036854775807 // Long형으로 추론
'안드로이드' 카테고리의 다른 글
[안드로이드] Android Studio/안드로이드 스튜디오 모듈 삭제하기 (0) | 2023.09.12 |
---|---|
[Android/Kotlin] 안드로이드에서 코틀린으로 TFLite 모델 돌릴 때 생길 수 있는 RGB, BGR 오류 / Pytorch와 TFLite 출력이 다른 이유 (0) | 2023.03.23 |
[안드로이드/코틀린] Bitmap 이미지 저장하기 (0) | 2023.03.15 |
[안드로이드/코틀린] asset 에서 이미지 Bitmap으로 읽기 (0) | 2023.03.15 |
[안드로이드/TFLite] TF Lite delegate (0) | 2023.03.09 |