将十进制分数转换为二进制分数的 C 程序
cserver side programmingprogramming更新于 2024/11/3 6:03:00
请考虑下面给出的示例,以了解如何在 C 编程语言中将十进制分数转换为二进制分数。
示例 1 − 将 25 转换为二进制。
步骤 1 − 25 / 2 Rem : 1 , Quo : 12
步骤 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 part = 1
步骤 2 − 0.4 * 2 = 0.8,Int part = 0
步骤 3 − 0.8 * 2 = 1.6,Int part = 1
步骤 4 − 0.6 * 2 = 1.2,Int part = 1
步骤 5 − 0.2 * 2 = 0.4, Int part = 0
步骤 6 − 0.4 * 2 = 0.8, Int part = 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