Primitive type and range

(참고) 1byte = 8 bits

Type \ Size(Byte)

1

2

4

8

논리형

boolean

문자형

char

정수형

byte

short

int

long

실수형

float

double

(설명) int를 기준으로 작은 게 short, 큰 게 long이다.

double은 float보다 정밀도가 2배이기 때문에 double이라고 명명된다고 한다.

정수형은 int형이 default이고, 실수형은 double형이 default이다.

  1. 표현범위1

n 비트로 표현할 수 있는 값의 갯수 : 2^n 개. (부호 유무에 따라 값의 범위가 달라진다!⭐️)

각 데이터 타입만 알면 아래와 같은 공식으로 표현 범위를 알 수 있기 때문에 외우지 않아도 된다.

n 비트로 표현할 수 있는 부호없는 정수의 범위 : 양수 - 1 ~ 2^n, 0 - (2^n)-1

n 비트로 표현할 수 있는 부호있는 정수의 범위 : -2^(n-1) ~ 2(n-1)-1

=>양수와 음수 둘 다 표현한디. 표현할 수 있는 범위의 절반을 음수표현에 사용한다.

ex)부호있는 정수(2^n개): n = 8, -2^7 ~ 2^7-1.=> [-128, 127]

부호없는 정수(2^n개): n=8, [0, 255]

byte형 : 1byte크기 = 8bits = 2^8 = 256.

2. 표현범위2

자바에서는 정수형과 실수형에는 부호를 나타내는 비트(부호비트)가 있다.

ex) short : 2byte = 16bits. 1bit 부호비트 + 15 bits. 값의 표현 범위 : -2^15 ~ 2^15-1. (2^15 = 32768) => -32768 - 32767

char : 문자코드를 저장하기 때문에 부호 비트가 없다. char : 2byte = 16bits. 0 ~ (2^16) -1 = 0 - 65535

int : 4byte = 32bits, 1 부호비트 + 31bits. 값의 표현 범위 : -2^31 ~ 2^31-1(2^31 = 약 20억) => -20억 - 20억.

long : 8bytes = 64bits, 1 부호비트 + 63bits. 값의 표현 범위 : -2^63 ~ 2^64 - 1.(8*10^18 = 약 800경) => -800 부터 800경

3. 표현범위3

Type

저장 가능한 값의 범위(양수)

정밀도

크기

float

1.4E-45 ~ 3.4E38

음수 : -3.4x10^38 ~ -1.4^10^-45

7자리

4bytes(=32bits)

double

4.9E-324 ~ 1.8E308

음수 : -1.8E308 ~ -4.9E-324

15자리

8bytes(=64bits)

float의 표현할 수 없는 범위 : -1.4X10^-45 ~ 1.4X10^-45

S(1) + E(8) + M(23) : 부호 비트1 + 지수비트8 + 가수비트23

float의 정밀도 : 가수비트 23bit는 정규화를 통해 24bit까지 가능하다.->2^24->10^7 < 2^24 < 10^8 이기 때문에 정밀도가 7이 된다.

double : float의 정밀도의 2배.

S(1) + E(11) + M(52) : 부호 비트1 + 지수비트11 + 가수비트52

double의 정밀도 : 마찬가지로, 정규화를 통해 53bit까지 가능하다면 2^53=약 (2^24)^2 = (10^7)^2 < 2^48 < (10^8)2 => 10^14 < 2^48 < 10^16 이 되므로 정밀도가 15 정도 된다.

Last updated