Hãy xem xét các ví dụ được đưa ra bên dưới để hiểu cách chuyển phân số thập phân sang phân số nhị phân trong ngôn ngữ lập trình C.
Ví dụ 1 - Chuyển đổi từ 25 sang nhị phân.
Bước 1 - 25/2 Rem:1, Quo:12
Bước 2 - 12/2 Rem:0, Quo:6
Bước 3 - 6/2 Rem:0, Quo:3
Bước 4 - 3/2 Rem:1, Quo:1
Bước 5 - 1/2 Rem:1, Quo:0
Vì vậy, số nhị phân tương đương là:11001
Ví dụ 2 - Chuyển đổi từ 0,7 sang nhị phân.
Bước 1 - 0,7 * 2 =1,4, Phần đầu =1
Bước 2 - 0,4 * 2 =0,8, Phần giới thiệu =0
Bước 3 - 0,8 * 2 =1,6, Phần giới thiệu =1
Bước 4 - 0,6 * 2 =1,2, Phần giới thiệu =1
Bước 5 - 0,2 * 2 =0,4, Phần giới thiệu =0
Bước 6 - 0,4 * 2 =0,8, Phần giới thiệu =0
Vì vậy, số nhị phân tương đương là:0,101100
Bước 3 - Cuối cùng, giá trị nhị phân của số thập phân 25,7 như sau -
11001 + 0.101100 = 1101.101100
Ví dụ
Sau đây là chương trình C để chuyển đổi một phân số thập phân thành phân số nhị phân -
#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; }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
Enter any fractional decimal number: 5.7 Equivalent binary value: 101.101100