진수 계산법
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);
}
}
자바 자료형 정리
'JAVA > 이재환의 자바 프로그래밍 입문' 카테고리의 다른 글
[Java] Ch.6 제어문 (1) | 2023.10.16 |
---|---|
[Java] Ch.5 콘솔 출력과 입력 (1) | 2023.10.13 |
[Java] Ch. 4 연산자 (1) | 2023.10.13 |
[Java] Ch.3 변수, 상수, 자료형의 형변환 (0) | 2023.10.13 |
[Java] Ch.1 Hello Java World (0) | 2023.10.13 |