티스토리 뷰

원시 타입(primitive type)에서 알아두면 좋을 것들



java primitive type에 대한 이미지 검색결과

출처 : http://oopjavavit.blogspot.kr/2012/01/data-types-in-java.html



(1) 1bit는 0과 1만을 나타낼 수 있습니다.


컴퓨터의 최소 단위인 bit는 0과 1만을 나타낼 수 있습니다.

이는 컴퓨터의 기본 원리와 관련이 있는데, 간단히 말하자면 컴퓨터는 전류가 조금이라도 흐르면 1, 흐르지 않으면 0을 나타내도록 설계되어 있기 때문입니다. 이에 대해선 다른 글에서 설명하도록 하겠습니다.


따라서 컴퓨터는 기본적으로 1과 0을 사용하는 2진법의 형태를 사용하고 있다고 볼 수 있습니다. 1bit는 즉 0과 1을 나타낼 수 있고, 2bit는 00 01 10 11로 4개의 숫자를 나타낼 수 있습니다.


(2) 1byte = 8bit입니다.


따라서 위의 그림에서 8bit = 1byte로 볼 수 있는데, 

byte라는 데이터 타입은 -128 ~127를 나타낼 수 있습니다.

양의 숫자가 127까지 나타낼 수 있는 이유는, 0을 포함하고 있기 때문입니다.

즉 -1....-128의 128개와 0~127의 128개를 합쳐서 총 256가지의 숫자를 나타낼 수 있는 것입니다.


short, int, long 타입도 크기만 클 뿐 기본적인 원리는 같습니다.


(3) 맨 앞의 bit가 음수양수를 구별하는 역할을 합니다.


예를 들어, byte 타입에서 0111 1111은 127을 나타냅니다. 

반대로 -128은 1000 0000으로 나타냅니다.

맨 앞의 비트가 1이면, 컴퓨터는 음수로 판단합니다.


음수를 읽는 방법은 다음과 같습니다. 


먼저 모든 숫자를 보수로 바꿉니다( 1을 0으로 0을 1로)

그리고 1을 더하면 찾으려는 수를 찾을 수 있습니다.


예를 들어 -127은 1000 0001입니다.

이 것을 전부 보수로 바꾸면 0111 1110이 되고, 여기에서 1을 더하면

0111 1111, 즉 127이 나옵니다.


(4) float, double 타입은 실수 타입입니다.


실수 타입의 bit는 다음과 같이 나누어져 있습니다.

float : 부호(1bit) + 지수(8bit) + 가수(23bit) = 32bit = 4byte

double : 부호(1bit) + 지수(11bit) + 가수(52bit) = 64bit = 8byte


double이 float보다 훨씬 정밀한 값을 저장할 수 있기 때문에 높은 정밀도를 요구하는 계산에서는 double을 사용해야 합니다.


(5) java의 정수 기본 타입은 int, 실수 기본 타입은 double입니다


즉 기본적으로 숫자를 표현할 때 그것이 정수면 int, 실수면 double로 인식합니다.

따라서 long이라는 것을 명시해주고 싶을 경우 뒤에 대문자 'L' 또는 소문자 'l'을 붙여줘야하고, float라는 것을 명시해주고 싶을 경우 대문자 'F' 또는 소문자 'f'를 뒤에 붙여 여줘야 인식할 수 있습니다. 


(6) char 타입은 문자를 나타내는데, 숫자로 문자를 나타낼 수 있습니다.


char 타입은 'A', '가', '?'와 같은 문자를 저장하는 변수입니다. 


하지만 컴퓨터는 모든 것을 숫자로 나타내야 합니다. 

즉, 우리가 'A'를 저장해도 컴퓨터는 'A'가 아닌 어떤 특정한 숫자로 저장을 한다는 뜻입니다. 


그렇다면 'A'는 어떤 숫자에 배정할지 정하는 약속이 필요할 겁니다.


그래서 Java는 모든 문자를 유니코드(Unicode)로 처리합니다. 

유니코드는 세계 각국의 문자들을 코드값으로 매핑한 국제 표준 규약입니다. 유니코드는 하나의 문자에 대해 하나의 코드값을 부여하기 때문에 영문 'A' 및 한글 '가'도 하나의 코드 값을 가집니다.


유니코드에선 'A'는 65번이며, char 타입 변수를 65로 지정하면 'A'가 저장되는 것을 볼 수 있습니다.

댓글