C程序将十进制小数转换为二进制小数

考虑下面给出的示例,以了解如何在 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,整数部分 = 1

步骤 2 − 0.4 * 2 = 0.8,整数部分 = 0

步骤 3 − 0.8 * 2 = 1.6,整数部分 = 1

步骤 4 − 0.6 * 2 = 1.2,整数部分 = 1

步骤 5 − 0.2 * 2 = 0.4,整数部分 = 0

步骤 6 − 0.4 * 2 = 0.8,整数部分 = 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("输入任何小数: ");

   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;

}

输出结果

执行上述程序时,会产生以下结果 -

输入任何小数: 5.7

Equivalent binary value: 101.101100

以上是 C程序将十进制小数转换为二进制小数 的全部内容, 来源链接: utcz.com/z/351612.html

回到顶部