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]

복사했습니다!