본문 바로가기
JAVA/이재환의 자바 프로그래밍 입문

[Java] Ch.2 자료형

by ♡˖GYURI˖♡ 2023. 10. 13.

진수 계산법

10진수를 2진수로 바꾸기

 

1바이트에서 제일 큰 수 : 1111 1111 = 255

 

256 표현 방법

10진수 숫자 2진수 신호  
256 1 0000 0000 잘못된 표현
256 0001 0000 0000 잘못된 표현
256 0000 0001 0000 0000 올바른 표현

→ 2바이트 사용하기

 

 

자바 기본 자료형

정수형

용도 자료형 이름 값의 크기 자바에서 값의 범위
1바이트 byte 2⁸ -128 ~ 127
2바이트 short 2¹⁶ - 32, 768 ~ - 32, 767
4바이트 int 2³² -2,147, 483, 648 ~ 2, 147,483, 647
8바이트 long 2⁶⁴ - 9, 223, 372, 036, 854, 775, 808
~  9, 223, 372, 036, 854, 775, 807
구분 값의 범위 경우의 수
양수만 표현 1 ~ 256 256가지
0 포함 양수 표현 0 ~ 255 256가지
음수까지 표현 - 128 ~ -1, 0, 1 ~ 127 256가지 양수를 반으로 나누어 음수에 배치
그리고 양수쪽에서 하나를 빼서 0을 포함

 

문자형

자료형 이름 자료형 크기
char 2바이트
char ch1 = 'A';

아스키코드

문자 10진수 16진수 2진수
A 65 0x41 0100 0001

자바에서는 2바이트로 문자를 표현하므로 A는 0000 0000 0100 0001 이 되어야 함

 

인코딩 : 'A'를 문자 코드표를 보고 이진수 0000 0000 0100 0001 로 바꾸는 것

디코딩 : 반대로 이진수 0000 0000 0100 0001 을 문자 코드표를 보고 문자 'A'로 바꾸는 것

 

public class Ex02_char
{
	public static void main(String[] args)
    {
    	char ch1 = 'A';		// 자바가 인코딩을 함
        char ch2 = 65; 		// 10진수로 직접 문자의 값을 넣어줌
        char ch3 = 0x41; 		// 16진수로 직접 문자의 값을 넣어줌
        char ch4 = 0b0000000001000001;
        				// 2진수로 직접 문자의 값을 넣어줌
        System.out.println(ch1);
        System.out.println(ch2);
        System.out.println(ch3);
        System.out.println(ch4);
    }
}

 

논리형

자료형 이름 자료형 크기
boolean 1바이트
  • true, false 두 가지 값만 가짐
  • 1비트면 될 것 같지만 최소 단위가 1바이트이므로 1바이트를 사용함
public class Ex03_boolean
{
    public static void main(String[] args)
    {
        boolean check1 = true;      // 직접 값 대입
        boolean check2 = false;
        boolean check3 = (1 < 2);   // 연산의 결과를 값으로 대입
        
        System.out.println(check1);
        System.out.println(check2);
        System.out.println(check3);
        System.out.println(1 > 2);  // 연산의 결과를 출력
    }
}

 

실수형

자료형 크기
float 4바이트
double 8바이트

 

고정 소수점 방식(fixed point)

지정해놓은 크기의 몇 자리는 소숫점 아래를 표현하는 데 사용

단점 : 정수부와 소수부의 자릿수가 크지 않으므로, 표현할 수 있는 실수의 범위가 매우 적음

 

부동 소수점 방식(floating point)

가수 부분(1.0)과 지수 부분(-1)을 나누어서 실수를 표현하는 방식

 

▼IEEE float형 부동 소수점 방식

▼IEEE double형 부동 소수점 방식

▼실수의 표현을 위해 정의된 수식

float형은 소수점 아래 7자리까지 정밀도를, double형은 소수점 아래 15자리까지 정밀도를 표현할 수 있음

(자바에서는 실수 사용 시 기본으로 double형을 사용)

 

단점 : 지수와 가수로 나타내는 부동 소수점 방식은 지수로 표현되는 값이 0을 나타낼 수 없음

 

부동 소수점 방식을 사용하면 표현할 수 있는 실수 범위는 고정 소수점 방식보다 늘어나지만, 10진수를 정확하게 표현할 수 없어서 언제나 근사치로 표현함 → 약간의 오차 발생 가능

public class Ex04_DoubleError1
{
    public static void main(String[] args)
    {
        double num1 = 1.0000001;
        System.out.println(num1);
        double num2 = 2.0000001;
        System.out.println(num2);
        double result = num1 + num2;
        System.out.println(result);
    }
}

public class Ex05_DoubleError2
{
    public static void main(String[] args)
    {
        double dNum = 0.0;
        
        for (int i=0; i<1000; i++)
        {
            dNum = dNum + 0.1;
        }
        System.out.println(dNum);
    }
}

 

 

 

 

자바 자료형 정리