'정수와 실수표현'에 해당되는 글 1건

  1. 2009.04.26 진법의 이해


* 진법의 이해
  - n진수의 표현방식 : n개의 문자를 이용해서 데이터를 표현
    | 0 1 | 2 3 4 5 6 7 8 9 | a b c d e f |
    |2진수|                   |                 |
    |         10진수          |                 |
    |                16진수                      |

 * 2진수와 10진수
  - 10진수 : 0~9를 이용한 데이터표현
  - 2진수 : 0,1을 이용한 데이터 표현
  - 컴퓨터는 내부적으로 모든 데이터를 2진수로 처리
  - 숫자나 문자형은 같은 데이터의 2진수값을 갖지만 Int와 String에 의해 캐릭터셋을 사용
    |...  0     /1바이트   0     0    0   0   0  0  0  0  |
      256      /            128   64  32  16  8  4  2  1   ->값의 표현(2의 배수로 증가)
    위에서 보듯이 1바이트는 128개의 값을 표현

   예) 00000000 : 0
    00001001 : 8 + 1 = 9
    10010010 : 128 + 16 + 2 = 146
    11111111 : 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255
    따라서 표현의 범위는 00000000 ~ 11111111으로 0부터 255인 256개를 표현
 
 * 16진수와 10진수
  - 0~9 , a , b , c , d , e , f를 이용한 데이터의 표현
  예) e   : 14
   f   : 15
   10  : 16
   11  : 17
   12  : 18
   13  : 19
   64  : 100
   f(15)이후의 값은 10진수의 10부터 증가처럼 10에서 1씩 값이 증가한다.

 * 비트와 바이트
  비트는 1자리수로 2진수 0, 1을 담는 표현의 최소단위
  바이트는 8비트를 1바이트로 설정
  바이트는 0~255의 256개의 값을 표현

 * 프로그램상에서 8진수와 16진수 표현
  - 8진수는 0으로 시작
  - 16진수는 0x로 시작
  예) a = 10 : 10진수의 10
   b = 0xa : 16진수의 10
   c = 012 : 8진수의 10

 * 정수의 표현방식
  - MSB(most significant bit:가장 중요한 비트) : 가장 왼쪽비트로서 부호를 표현(0은 양수 1은 음수)
  - MSB를 제외한 나머지 비트 : 데이터의 크기를 표현
       |   0   |    0  0  0  0  1  0  1   |
      msb(양수)  data 크기(5) : 00000101 : 5
  
    음수는 양수에 1의 보수를 취하고 1을 더한다.
       | 1 | 1 1 1 1 0 1 0 | -> 5의 1의 보수
       | 1 | 1 1 1 1 0 1 1 | -> 보수에 1을 더함
     msb(음수)  data 크기(5) : 11111011 : -5

  예) 00110011 : 51
   11110000  -> 1의 보수 : 00001111 -> 00010000 : 최초 msb는 1이므로 -(16)
   1의 보수에 1을 더한다.
      00001111
    + 11111111
    -----------
      00010000  1+1은 10, 1이 올라가서 1+1+1이므로 0, 해당 자리에서 1이 또 올라감

 * 실수의 표현 방식
  - 오차가 존재하는 단점이 있지만 데이터의 크기면에서는 효율적이다.(모든 컴퓨터)
    
           [ msb(1.m)*2^(e-127) ]
    | 1 | 0 0 0 0 0 0 1 | 0  0 0 0 0 1 0 1 |
         |       m         |         e            |

   위의 경우 식은 -(1.1)*2^(5-127) -> -(1.1)*2^(122) = -5.84860318145363e+36

Posted by 버터백통