C語言程式:將十進位制小數轉換為二進位制小數


請參考以下示例,瞭解如何在C語言中將十進位制小數轉換為二進位制小數。

示例1 - 將25轉換為二進位制。

步驟1 - 25 / 2 餘數:1,商:12

步驟2 - 12 / 2 餘數:0,商:6

步驟3 - 6 / 2 餘數:0,商:3

步驟4 - 3 / 2 餘數:1,商:1

步驟5 - 1 / 2 餘數:1,商: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("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

更新於:2021年9月1日

瀏覽量1K+

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告