본문 바로가기

C언어/과제

소수점(실수)을 2진법 변환하는 법

     13.3을 2진수로 계산하는 법은 다음과 같다.

    (1) 정수부분 13의 경우 
    13을 2로 나누어 몫 6은 13의 아래에 쓰고, 나머지 1은 몫 6의 오른쪽에 쓴다. 이러한 방법으로 몫을 나눌 수 없을 때까지 계속하여 마지막 몫 1과 나머지를 아래에서 위로 차례대로 쓰면 구하는 2진수가 된다.

    (2) 소수부분 0.3의 경우 
    0.3에 2를 곱한 0.6을 아래에 쓰고 정수부분 0을 오른쪽에 쓴다. 다음은 0.6에 2를 곱한 1.2를 아래에 쓰고 정수부분 1을 오른쪽에 쓴다. 그리고 1.2에서 1을 뺀 나머지 0.2를 1.2의 아래에 쓴다. 위와 같은 방법을 나머지가 0이 나오거나 나머지가 같은 경우가 나올 때까지 계속한다. 대부분의 소수의 진수계산은 순환하는 값이 나온다. 진수를 쓰는 방법은 오른쪽에 나온 값을 위에서 아래로 차례대로 쓰면 구하는 2진수 표현이 된다.

     
    즉, 구하는 2진수 값은 (1)과 (2)에 나온 값을 소수점(.)으로 이으면 된다.
    13.3 (10진수) = 13 + 0.3 (10진수) = 1101.010011001100110011... (2진수)

    수 부분의 변환
            - 소수 부분을 변환하고자 하는 임의의 진수 r로 곱한다.
            - 계산된 값에서 정수 부분을 떼어낸다.
            - 소수부가 0에 도달되거나 반복되는 부분이 나올 때까지 곱한다.
            - 곱해서 나온 정수를 위에서 아래로 나열한다.
            예 : (0.625)10을 2진수로 변환

    곱하기
    0.625 x 2 = 1.25
    0.25 x 2   = 0.5
    0.5 x 2     = 1.0

    정수부
    1   |
    0   |
    1   ↓

    또는

    0.625
    x     2 
      1.25
      x   2 
        0.5
        x 2 
        1.0

    (0.625)10 = (0.101)2


    ※ 모든 진수는 2진수로 통한다..

    ☞ 10진수, 8진수, 16진수는 각각 바로 2진수로 바꿀 수 있다..  
    ☞ 10진수, 8진수, 16진수 서로 간의 변환은 반드시 2진수를 통해서 한다..  

    ☞ 10진수는  변환하려는 숫자보다 작거나 같은 수까지만 쓰고.. 뺐으면 1, 못 뺐으면 0을 쓴다..

    <위의 그림이 깨져보이면.. 그림을 클릭하세요..>
     
    복잡한 듯 하지만..;;; 중요한건 검정색 굵은 숫자와 빨간 숫자 입니다.. 검정색 굵은 숫자 아래의 지수 표시는 예의상;; 한 것이구요..
    간단합니다.. 1부터 시작해서 왼쪽으로는 2씩 곱해나가면 되고.. 오른쪽(소수점이하)으로는 2씩 나누면 됩니다..  
    특히나, 소수점 이하 부분은 그냥 숫자를 외워버리세요..  
    주의할 점은.. 위의 숫자들은 1부터 세어 나가세요.. 1 2 4 8 16 32 등등.. 그리고, 쓸 때는 오른쪽에서 왼쪽으로 씁니다..