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