이름용도대입1바이트 = 8비트
| 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
|---|---|---|---|---|---|---|---|
| 부호비트(MSB) | 0 | 0 | 16 | 8 | 0 | 0 | 1 |
+25
| 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
|---|
+5
| 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
|---|
1의 보수(0을 1로, 1을 0으로)
| 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
|---|
2의 보수(1의보수에 1을 더한다)
+5 + (-5)
| 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
|---|
'+'
| 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
|---|
=
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
|---|
여기서 올림수(carry)인 1은 버린다.
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
|---|
+5 + (-5) = 0이 나온다.
public class test {
public static void main(String[] args){
double num1, num2;
double result;
num1 = 1.0000001;
num2 = 2.0000001;
result = num1 + num2;
System.out.println(result);
}
}
// 3.0000001999999997

실수형의 값이 너무 많기때문에, 위 수식을 기준으로 듬성듬성 표현되어있는 실수 중에 double형 값과 제일 가까운 근사치 값의 실수를 반환한다. 그래서 정확하지 않다.
| 자료형 | 데이터 | 크기 |
|---|---|---|
| byte | 정수 | 1 바이트 |
| short | 정수 | 2 바이트 |
| int | 정수 | 4 바이트 |
| long | 정수 | 8 바이트 |
public class test {
public static void main(String[] args){
short num1 = 11;
short num2 = 22;
short result = num1 + num2; // ERROR
System.out.println(result);
}
}
// error : conversion from int to short
int형으로 진행한다.(1바이트, 2바이트도 가능하게 할순 있지만 성능저하가 있기때문에 보편적인 int형으로만 진행)| 자료형 | 데이터 | 크기 |
|---|---|---|
| float | 실수 | 4 바이트 |
| double | 실수 | 8 바이트 |
| 자료형 | 데이터 | 크기 |
|---|---|---|
| char | 문자 | 2 바이트 |
public class CharTypeUnicode {
public static void main(String[] args){
char ch1 = '헐';
char ch2 = '확';
char ch3 = 54736; // 유니코드 값(10진수)
char ch4 = 54869; // 유니코드 값(10진수)
char ch5 = 0xD5D0; // 유니코드 값(16진수)
char ch6 = 0xD655; // 유니코드 값(16진수)
System.out.println(ch1 + " " + ch2);
System.out.println(ch3 + " " + ch4);
System.out.println(ch5 + " " + ch6);
}
}
/*
헐 확
헐 확
헐 확
*/
| 자료형 | 데이터 | 크기 |
|---|---|---|
| boolean | 참, 거짓 | 1 바이트 |