기록양식
1. 배운내용
2. 개념정리
3. 의문점 or 문제
4. 해결
5. 알게 된 점
6. 응용
정수형 변수
- byte byteNumber = 127; // byte 는
-128 ~ 127 범위의 숫자만 저장 가능합니다.
- short shortNumber = 32767; // short 는
-32,768~32,767 범위의 숫자만 저장 가능합니다.
- int intNumber = 2147483647; // int 는
-21억~21억 범위의 숫자만 저장 가능합니다.
- long longNumber = 2147483647L; // long 은
숫자뒤에 알파벳 L 을 붙여서 표기하며 매우 - 큰수를 저장 가능합니다.
실수형 변수
- float floatNumber = 0.123f; // float 는
4byte 로 3.4 * 10^38 범위를 표현하는 실수값
- double doubleNumber = 0.123123123; // double
은 8byte 로 1.7 * 10^308 범위를 표현하는 실수값
low >> 형 변환 >> high
👇👇👇
(정수)byte(1) -> short(2) -> int(4) -> long(8) -> // (실수)float(4) -> double(8)
👇👇
int(4) -> long(8) -> float(4)
👇
🤷♀️ float
의 바이트가 더 적은데 어떻게 long
보다 넓은 범위를 표현할까?
실수
와 부동 소수점
실수 표현과 부동 소수점에 대해 이해하기 위해서는 먼저 '실수'와 '부동 소수점'이 무엇인지 알아야 합니다.
실수(Real Number):
실수는 소수점이 있는 숫자를 말합니다. 예를 들어, 3.14, 0.01, -2.5 등이 실수입니다.
이러한 실수는 컴퓨터에서 표현하기 위해 '부동 소수점' 방식을 사용합니다.
부동 소수점(Floating Point):
부동 소수점은 실수를 컴퓨터에서 표현하는 방식입니다. '부동'이란 단어가 의미하는 것은
소수점의 위치가 고정되어 있지 않고, '움직일 수 있다'는 것입니다.
이 방식은 매우 큰 수나 매우 작은 수를 표현하는 데 유용합니다.
예를 들어, 0.000123
과 123000000.0
두 수를 생각해봅시다.
이 두 수를 부동 소수점으로 표현하면, 각각 1.23 x 10^-4
와 1.23 x 10^8
로 표현할 수 있습니다. 여기서 1.23은 '가수(mantissa)'
라고 하고, -4와 8은 '지수(exponent)'
라고 합니다.
이처럼 부동 소수점은 가수와 지수로 이루어져 있습니다.
long의 범위 :
long
은64비트(8바이트)
를 사용하여정수
를 표현합니다. 이는 2의 64승, 즉 약-9,223,372,036,854,775,808
부터9,223,372,036,854,775,807
까지의 정수를 표현할 수 있습니다.약
-922경 3372조 368억 5477만 5807
~+922경 3372조 368억 5477만 5807
float의 범위 : 반면에
float
는32비트(4바이트)
를 사용하여실수
를 표현합니다. 그러나 이 32비트는부동 소수점
방식에 따라'가수'와 '지수'
로 나뉘어 사용됩니다. 이 방식 덕분에 float는매우 큰 수(약 10^38)
부터매우 작은 수(약 10^-38)
까지 표현할 수 있습니다.약
+-100,000,000,000,000,000,000,000,000,000,000,000,000
>백간(^38)
억(^8)
<조(^12)
<경(^16)
<해(^20)
<자(^24)
<자(^24)
<양(^28)
<구(^32)
<간(^36)
<백간(^38)
예시 코드
public class Main {
public static void main(String[] args) {
long a = 10000000000L; // 10^10, long으로 표현 가능
float b = 10000000000F; // 10^10, float으로 표현 가능
long c = 10000000000000000000L; // 10^19, long으로 표현 불가능
float d = 10000000000000000000F; // 10^19, float으로 표현 가능
long e = 0.1L; // 0.1, long으로 표현 불가능
float f = 0.1F; // 0.1, float으로 표현 가능
}
}