오버플로우(Overflow) | 언더플로우(Underflow) |
표현할 수 있는 최대값을 초과하는 상황 | 표현할 수 있는 최소값보다 더 작은 값이 되는 상황 |
정수 연산에서 최대값을 다룰 때 | 부동 소수점 연산에서 매우 작은 수를 다룰 때 |
∴ 값이 순환하여 음수 또는 다른 값이 됨 | ∴ 값이 0으로 처리되거나 매우 작은 비정규화 수로 표현됨 |
오버플로우 예시 | 언더플로우 예시 |
int max_int = 2147483647; // 32비트 정수 최대값 int overflowed_value = max_int + 1; // overflowed_value는 -2147483648이 됨 |
int minInt = Integer.MIN_VALUE; // 32비트 정수 최소값: -2147483648 int underflowedValue = minInt - 1; // 언더플로 발생 //underflowed_value는 2147483647이 됨 |
쉬프트 연산자 | |
A << B | 정수 A의 bit를 정수 B 만큼 좌측으로 밀고 빈칸은 0으로 채움 |
A >> B | - 정수 A의 bit를 정수 B 만큼 우측 으로 밀고 1) A가 양의 정수라면 전부 0으로 채우고 2) A가 음의 정수라면 전부 1로 채움 |
[예시 : A << B] : 12 << 2
0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
- 값 12
0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
- 1, 1이 들어있는 값 좌측으로 2칸밀고 밀린 부분은 0으로 : 최종 48
[예시 : A >> B] : 3 >> 2
0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
- 값 3
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- 1, 1이 들어있는 값 우측으로 2칸 밀고 밀린 부분은 0으로
728x90
'용어 > java' 카테고리의 다른 글
[국비][JAVA] 인터페이스와 추상(abstract) 차이 (0) | 2024.06.02 |
---|---|
[국비][JAVA] 메서드 오버로딩, 오버라이딩 차이 (0) | 2024.05.30 |
[국비][JAVA] 참조값 및 객체 이해하기_예시 (0) | 2024.05.30 |
[국비][JAVA] 배열 이해 및 기본형, 참조형 기본 값 (0) | 2024.05.28 |
[국비][JAVA] 자바 메모리 영역 (0) | 2024.05.28 |