오늘도 어김없이 과제가 있습니다.
변수와 자료형이길래 당연히 변수와 자료형만 다루겠다는 제 1차원적인 생각은 강의를 들으며 완전히 무너졌습니다.
오늘의 주된 내용은 진법변환이라고 생각되는데요, 제가 처음 JAVA를 배울 때도 한 번에 이해하기 어려웠던 부분이기에 이 부분에 좀 더 집중하며 들었습니다.
그럼 바로 정리를 시작해볼까요!
컴퓨터는 0과 1로만 데이터를 저장하는데 이것을 bit라는 단위로 나타냅니다. 여기서 0과 1은 on과 off를 나타냅니다.
컴퓨터는 0과 1로 자료를 표현합니다. 따라서 숫자나 문자도 0과 1의 조합으로 표현됩니다.
| 10진수 | 2진수 |
|---|---|
| 0 | 0000 0000 |
| 1 | 0000 0001 |
| 2 | 0000 0010 |
| 3 | 0000 0011 |
| 4 | 0000 0100 |
| 5 | 0000 0101 |
| 6 | 0000 0110 |
| 7 | 0000 0111 |
| 8 | 0000 1000 |
| 9 | 0000 1001 |
| 10 | 0000 1010 |
10을 십으로 읽지 않고 일영이라고 읽는다.2진수말고도 8진수와 16진수를 사용하기도 합니다. 왜 굳이 8진수와 16진수가 필요한 것일까요? 왜냐하면 2진수로 표현하면 길이가 너무 길어지기 때문에 상대적으로 적게 bit를 사용하는 8진수나 16진수를 사용하는 것입니다.
| 10진수 | 16진수 |
|---|---|
| 9 | 9 |
| 10 | A |
| 11 | B |
| 12 | C |
| 13 | D |
| 14 | E |
| 15 | F |
| 16 | 10 |
| 10진수 | 8진수 |
|---|---|
| 7 | 7 |
| 8 | 10 |
| 9 | 11 |
0은 숫자이다.Ctrl+F11을 하면 eclipse에서 컴파일이 됨package binary;
public class BinaryTest {
public static void main(String[] args) {
int num = 10;
int bNum = 0B1010; //2진수 10
int oNum = 012; //8진수 10
int hNum = 0XA; //16진수 10
System.out.println(num);
System.out.println(bNum);
System.out.println(oNum);
System.out.println(hNum);
}
}
실행결과 :
10
10
10
10
정수의 가장 왼쪽에 존재하는 비트는 부호비트라고 함과 동시에 MSB라고도 합니다.
음수를 만드는 방법은 2의 보수를 취하는 것입니다.
일반적으로 양수는 우리가 숫자를 표현할 때 8bit를 씁니다.
앞 부분, 즉 MSB가 0인 경우를 우리는 양수라고 합니다.
반대로 앞 부분이 1인 경우는 음수라고 합니다.
0000 0101 -> 1111 10101111 1011결과 : 0000 0101 + 1111 1011 = 0000 0000
이제 실제로 eclipse에서 양수와 음수를 더해보겠습니다.
package binary;
public class BinaryTest2 {
public static void main(String[] args) {
int num1 = 0B00000000000000000000000000000101; //5
int num2 = 0B11111111111111111111111111111011; //-5
int sum = num1 + num2;
System.out.println(num1);
System.out.println(num2);
System.out.println(sum);
}
}
실행결과 :
5
-5
0
이 블로그에 작성된 정보를 더 자세히 알고 싶다면?
Do it! 자바 프로그래밍 입문_자바 프로그래밍 시작하기 강의를클릭하세요!