케네스로그

[Java] 데이터 타입, 범위, 기본값 본문

Dev/Java

[Java] 데이터 타입, 범위, 기본값

kenasdev 2022. 1. 30. 00:43
반응형

Primitive type의 종류, 값의 범위, 기본값

Name Tags default value scope size  
boolean 논리형 false true, false 1 byte  
byte 정수형 0 -128 ~ 127 1 byte  
short 정수형 0 - 32,768 ~ 32,767 2 byte  
int 정수형 0 - 2,147,483,648 ~ 2,147,483,647 4 byte java8부터 unsigned 가능
(parseUnsignedInt())
long 정수형 0L - 9,223,372,036,854,775,808 
~ 9,223,372,036,854,775,807
8 byte 약 20자리
float 실수형 0.0F (3.4 * 10^-38) ~ (3.4 * 10^38) 근사값 4 byte  
double 실수형 0.0 (1.7 * 10^-308) ~ (1.7 * 10^308) 근사값 8 byte  
char 문자형 '\u0000' 0 ~ 65,535 1 byte  

2비트는 2진수 두 자리를 뜻하며, 비트가 늘어날수록 표현가능한 가지수는 2의 제곱으로 늘어납니다. 
1비트 = 2가지, 2비트 = 4가지, 3비트는 8가지, 4비트는 16가지 ...

 

정수형 primitive type 중 byte 자료형의 메모리 크기는 1byte(8bit)입니다. 즉, 1 byte 자료형은 메모리 상 8개의 비트를 통해 값을 표현하며, 2^8(256)가지를 표현할 수 있습니다.. 그렇다면 왜 0~255이 아닌, -128~127일까요?

 

그것은 컴퓨터에서 음수를 표현하기위해 2's complement 시스템을 사용하기 때문이다. 8자리 중 최상위 비트 자리수는 MSB(most significant bit)로써 부호를 표현하기 위해 사용됩니다. 최상위비트가 1이면 음수, 0이면 양수로 판단합니다. 그럼, 실질적으로 절대적인 값을 표현할 수 있는 비트는 7개입니다. 따라서, 양수 2^7개(127), 0 그리고 음수 2^7개(128)를 표현할 수 있는 것입니다.

 

java에서 지원하는 정수형 Primitive type은 여러개가 있으며, 각 타입은 값을 표현하기 위해 사용되는 비트 수(사이즈)가 다릅니다. long은 8byte(64 bit)를 차지하며, 이는 2^64 만큼 표현할 수 있다는 뜻이기도 합니다.

 

💡long으로 표현할 수 없을만큼 큰 정수를 다루는 방법 BigInteger Class
BigInteger는 내부적으로 다중 정수형 배열(int[])형태로 이루어져 있으며, 얼마나 큰 데이터를 다루느냐에 따라 동적으로 메모리 사용량을 달리 합니다.

참조:  How much space does BigInteger use? - https://stackoverflow.com/questions/15301249/how-much-space-does-biginteger-use
반응형