攝氏度與華氏度的轉(zhuǎn)換公式為C=(F-32)*5/9。
不少人看到這樣的轉(zhuǎn)換公式就會(huì)將攝氏度C和華氏度F定義成浮點(diǎn)數(shù)類型的變量。
然后采用C語言編寫
C=(F-32)*5/9的語句進(jìn)行轉(zhuǎn)換。
如果在帶有浮點(diǎn)數(shù)高級(jí)處理器上運(yùn)算、或者是對(duì)實(shí)時(shí)性沒有要求,不在乎該轉(zhuǎn)換所耗費(fèi)的時(shí)間,則沒有任何問題。
但是如果該程序運(yùn)行在普通的單片機(jī),而且該單片機(jī)除了要進(jìn)行轉(zhuǎn)換之后,還有其它實(shí)時(shí)性要求高的任務(wù)需要處理。比如需要快速進(jìn)行故障判斷并進(jìn)行保護(hù),或者是需要進(jìn)行通信數(shù)據(jù)處理,快速響應(yīng)。
比如需要進(jìn)行輸出短路的保護(hù)判斷,有些輸出的短路可能需要在幾百us內(nèi)進(jìn)行保護(hù),否則可能損壞器件,如果該轉(zhuǎn)換耗時(shí)幾ms以上,可能就會(huì)導(dǎo)致響應(yīng)不及時(shí),造成器件損壞。
所以當(dāng)程序運(yùn)行在普通的單片機(jī)時(shí),我們還需要考慮該單片機(jī)是否支持硬件的浮點(diǎn)數(shù)運(yùn)算,甚至要考慮是否有硬件的乘法器。
普通的單片機(jī)不支持硬件浮點(diǎn)數(shù)運(yùn)算,浮點(diǎn)數(shù)的四則運(yùn)算可能需要軟件算法實(shí)現(xiàn),會(huì)花費(fèi)大量的時(shí)間。
這種情況,我們可以根據(jù)精度和量程要求,放縮之后,將C和F定義為整型的變量,再進(jìn)行運(yùn)算。
比如,如果我們?nèi)?位小數(shù)的精度,量程為100攝氏度,
則可以將C和F定義為16位的整型,采用下列的程序進(jìn)行轉(zhuǎn)換;
signed short C, F;
C=(F-32)*50/9。
早期的Microchip的PIC16F,PIC18F系列的處理器,沒有硬件乘除法器,進(jìn)行乘除法運(yùn)算,都需要通過軟件算法實(shí)現(xiàn),可能耗費(fèi)幾十ms的時(shí)間。
這種情況我們可以通過加法和移位操作實(shí)現(xiàn);
*5/9約等于36408/65536=(32768+2048+1024+512+32+16+8)/65536;
將C定義為32位的整型。
signed int C, d1,d2;
d1=F-32;
d2=d1 《《 3;//*8
d1 = d1 《《1;//*16
d2 += d1;
d1 = d1 《《 1;//*32;
d2 += d1;
d1 = d1 《《 5;//*512;
d2+= d1;
d1 = d1 《《 1;//*1024;
d2 += d1;
d1 = d1 《《 4; //*32768
d2+= d1;
C=d2》》16;
這樣可以大大節(jié)省轉(zhuǎn)換時(shí)間。
首先,我們要理解需求,就像你問的“攝氏度與華氏溫度如何轉(zhuǎn)換”,然后就是設(shè)計(jì),簡(jiǎn)單點(diǎn)就是使用怎樣的公式算法來解決問題,
“攝氏溫標(biāo)”是經(jīng)驗(yàn)溫標(biāo)之一,亦稱“百分溫標(biāo)”。溫度符號(hào)為t,單位是攝氏度,國際代號(hào)是“℃”
華氏溫標(biāo)”是經(jīng)驗(yàn)溫標(biāo)之一。在美國的日常生活中,多采用這種溫標(biāo)。規(guī)定在一大氣壓下水的冰點(diǎn)為32度,沸點(diǎn)為212度,兩個(gè)標(biāo)準(zhǔn)點(diǎn)之間分為180等分,每等分代表1度。華氏溫度用字母“F”表示。它與攝氏溫度(C)和之間的換算關(guān)系為F=9/5c+32, 或C=5/9(F-32)。
現(xiàn)在轉(zhuǎn)換公式已經(jīng)有了,就是編碼實(shí)現(xiàn)了。
代碼:
#include 《stdio.h》
int main(void)
{
float F,C;
print(“華氏度--攝氏度轉(zhuǎn)換器\n”)
printf(“請(qǐng)輸入您需要轉(zhuǎn)換的華氏溫度:”);
scanf(“%f”,&F);
C = (F-32)*5/9.0;
printf(“其對(duì)應(yīng)的攝氏溫度為:%.2f \n”,C);
return 0;
}
-
C語言
+關(guān)注
關(guān)注
180文章
7614瀏覽量
137741 -
攝氏度
+關(guān)注
關(guān)注
0文章
4瀏覽量
3638
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論