오늘도 어김없이 과제가 있습니다.
변수와 자료형이길래 당연히 변수와 자료형만 다루겠다는 제 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 1010
1111 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! 자바 프로그래밍 입문_자바 프로그래밍 시작하기 강의를클릭하세요!