Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

소수를 이진 분수로 변환하는 C 프로그램

<시간/>

C 프로그래밍 언어에서 소수를 이진 분수로 변환하는 방법을 이해하려면 아래의 예를 고려하십시오.

예시 1 − 25를 이진수로 변환합니다.

Step 1 − 25 / 2 Rem :1 , Quo :12

Step 2 − 12 / 2 Rem :0 , Quo :6

Step 3 − 6 / 2 Rem :0 , Quo :3

Step 4 − 3 / 2 Rem :1 , Quo :1

5단계 − 1 / 2 Rem:1 , Quo:0

따라서 동등한 이진수는 11001

입니다.

예시 2 − 0.7에서 바이너리로 변환

1단계 − 0.7 * 2 =1.4, Int 부분 =1

2단계 − 0.4 * 2 =0.8, Int 부분 =0

3단계 − 0.8 * 2 =1.6, Int 부분 =1

4단계 − 0.6 * 2 =1.2, Int 부분 =1

5단계 − 0.2 * 2 =0.4, Int 부분 =0

6단계 − 0.4 * 2 =0.8, Int 부분 =0

따라서 동등한 이진수는 0.101100

입니다.

3단계 - 마지막으로 십진수 25.7의 이진수 값은 다음과 같습니다. -

11001 + 0.101100 = 1101.101100

예시

다음은 소수 분수를 이진 분수로 변환하는 C 프로그램입니다. -

#include<stdio.h>
int main(){
   long double fraDecimal,fraBinary,bFractional = 0.0,dFractional,fraFactor=0.1;
   long int dIntegral,bIntegral=0;
   long int intFactor=1,remainder,temp,i;
   printf("Enter any fractional decimal number: ");
   scanf("%Lf",&fraDecimal);
   dIntegral = fraDecimal;
   dFractional = fraDecimal - dIntegral;
   while(dIntegral!=0){
      remainder=dIntegral%2;
      bIntegral=bIntegral+remainder*intFactor;
      dIntegral=dIntegral/2;
      intFactor=intFactor*10;
   }
   for(i=1;i<=6;i++){
      dFractional = dFractional * 2;
      temp = dFractional;
      bFractional = bFractional + fraFactor* temp;
      if(temp ==1)
         dFractional = dFractional - temp;
      fraFactor=fraFactor/10;
   }
   fraBinary = bIntegral + bFractional;
   printf("Equivalent binary value: %lf",fraBinary);
   return 0;
}

출력

위의 프로그램을 실행하면 다음과 같은 결과가 나온다 -

Enter any fractional decimal number: 5.7
Equivalent binary value: 101.101100