Why 진법 변환을 알아야 하는가?
문자가 유니코드표에 의해서 특정 정수 값으로 정해진다.
정해진 10진수 정숫값을 컴퓨터에 인식시켜주기 위해 2진법으로 변환하는 방법을 알아야만 한다.
2/8/10/16진법
2진법 : 0,1
8진법 : 0,1,2,3,4,5,6,7
10진법 : 0,1,2,3,4,5,6,7,8,9
16진법 : 0,1,2,3,4,5,6,7,8,9, A(10), B(11), C(12), D(13), E(14), F(15)
2진수
1010 -> 10진수
1*2^3 + 0*2^2 + 1*2^1 + 0*2^0
1*8 + 0 + 1*2 +0
10
8진수
012 ->10진수
1*8^1 + 2*8^0
10
10진수 10 -> 2진수(1바이트) [0][0][0][0][1][0][1][0]
//10진수 10 -> 8진수 012 8진수 표기할 때 앞에 0을 붙인다.
//10진수 10 -> 16진수 0xA
음수 표현 방법
1. 부호와 절대치 ------현재에 사용하고 있지 않음
Why?
0표현방식이 2가지로 낭비되기 때문이다.
[0]000 0000
[1]000 0000
참조) 부호와 절대치 하는 방법(ex : -10)
1단계 양수 10
음수 -10 부호와 절대치
ㅣ-10ㅣ ----->10
10
2단계 2진수 변환 [부호 비트]000 1010
부호비트에 양수면 0 음수면 1을 넣는다.
양수 10 [0]000 1010
음수 -10 [1]000 1010
2. 1의 보수법 -------이것도 현재에 사용 안 함
Why?
0표현방식이 2가지로 낭비되기 때문이다.
참조) 1의 보수법 하는 방법 (ex : -10)
1단계 양수 10
음수 -10 부호와 절대치
ㅣ-10ㅣ ----->10
10
2단계 2진수 변환 0000 1010
3단계 보수 1111 0101 --------> -10을 표현한 것이다.
3. 2의 보수법(현재)
2의 보수법 하는법 (ex : -10)
1단계 양수 10
음수 -10 부호와 절대치
ㅣ-10ㅣ ----->10
2단계 2진수 변환 0000 1010 1byte로 표현
3단계 1보수 1111 0101
4단계 +1 0000 0001
------------------------
[1111 0110]
246 과 -10 이진법 구별방법
1바이트(byte) -128 ~ 127
-10 -> [1][1][1][1] [0][1][1][0] 로 표현가능
246 2진수 변환 -> [1][1][1][1] [0][1][1][0] 1바이트로 표현 불가능
산술오버플로워 발생
246 은 최소 2바이트가 있어야 표현가능함
[0][0][0][0] [0][0][0][0] [1][1][1][1] [0][1][1][0]