Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C แปลงเศษทศนิยมเป็นเศษส่วนไบนารี


ลองพิจารณาตัวอย่างที่ให้ไว้ด้านล่างเพื่อทำความเข้าใจวิธีการแปลงเศษส่วนทศนิยมเป็นเศษส่วนไบนารีในภาษาซี

ตัวอย่างที่ 1 − การแปลง 25 เป็นไบนารี

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

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

ขั้นตอนที่ 3 − 6 / 2 Rem :0 , Quo:3

ขั้นตอนที่ 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