久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11542|回復(fù): 3
收起左側(cè)

C語言浮點(diǎn)數(shù)轉(zhuǎn)十六進(jìn)制(經(jīng)驗(yàn))

[復(fù)制鏈接]
ID:371450 發(fā)表于 2018-7-14 14:36 | 顯示全部樓層 |閱讀模式
浮點(diǎn)轉(zhuǎn)十六進(jìn)制:
/*作用:浮點(diǎn)數(shù)---轉(zhuǎn)---十六進(jìn)制 */
union fnum
{
long int m;
float f;
};
然后需要在引用的函數(shù)內(nèi)聲明共用體比如:
union fnum num;
用法:共用體是將 多個(gè)成員變量共用一個(gè)地址,并且同一時(shí)刻只允許1個(gè)成員變量被賦值,當(dāng)某個(gè)成員變量修改后,其他的成員立刻改變,
比如:num.f=6.91;那么num.m=0x40DD1EB8;
當(dāng)num.f=6.0時(shí),另一個(gè)成員變量也改變num.m=40C00000
因?yàn)?單片機(jī)的十進(jìn)制和十六進(jìn)制都可以進(jìn)行直接計(jì)算,所以用以上辦法就可以實(shí)現(xiàn)浮點(diǎn)數(shù)轉(zhuǎn)十六進(jìn)制.
通俗的講:共用體就像一個(gè)容器,成員變量就是不同形狀的容器出口,當(dāng)我們把1個(gè)圓形的物體放進(jìn)去,如果這時(shí)我們像要一個(gè)方形的物體,那么就從方形的出口將物體取出,就得到方形了,
同理,我們要浮點(diǎn)轉(zhuǎn)十六進(jìn)制,就把浮點(diǎn)放進(jìn)共用體(num.f=6.91),然后從整形取出( Rec=num.m )
細(xì)節(jié)問題:
因?yàn)楦↑c(diǎn)數(shù)轉(zhuǎn)成十六進(jìn)制后,通常都是32位數(shù)據(jù),所以我們在取出整形數(shù)的時(shí)候要 用一個(gè)32位的變量(long int,或者u32 ) 去存.
2. 共用體和結(jié)構(gòu)體的區(qū)別
  共用體和結(jié)構(gòu)體有下列區(qū)別:
  1. 共用體和結(jié)構(gòu)體都是由多個(gè)不同的數(shù)據(jù)類型成員組成,
  但在任何同一時(shí)刻, 共用體只存放了一個(gè)被選中的成員, 而結(jié)構(gòu)體的所有成員都存在。
  2. 對于共用體的不同成員賦值, 將會(huì)對其它成員重寫, 原來成員的值就不存在了,
  而對于結(jié)構(gòu)體的不同成員賦值是互不影響的。 另外要注意的是,


計(jì)算串口接收到的浮點(diǎn)數(shù):
我們通常在接收到串口的數(shù)字時(shí), 基本上都是文本類型的數(shù)字, 并且是一位一位的文本,
比如6.19就是 ‘6’, ’.’ , ’1’ , ’9’
我們將它重新變?yōu)?.19需要進(jìn)行一下操作:
Arr[]={‘6’,’.’,’1’,’9’}
1. 所有文本類型的數(shù)字只有 減零 之后才可以進(jìn)行計(jì)算,否則是文本型.
  Arr[0]-‘0’;
2. 特別注意

sum_num= (float)(arr[6]-'0')+
(float)(arr[8]-'0')/10 +(float)(arr[9]-'0')/ 100;
在計(jì)算的時(shí)候,小數(shù)部分要轉(zhuǎn)換成 小數(shù),然后進(jìn)行相加,
注意的是 在(float) (arr[8]-'0')/10的時(shí)候, 前面要先強(qiáng)制裝換成(float)之后 才可以/10,這樣才是把 1變成0.1,
如果在/10之前 沒有(float)的話,意味著取10的倍數(shù),
如果是 1/10,不加(float),那就等于0;最后相加就等于6.00000;
正確:
3. 注意細(xì)節(jié):
成功將Arr[]={‘6’,’.’,’1’,’9’}
組合成sum_num =6.19之后, 在進(jìn)行判斷sum_num時(shí):
if(sum_num == 62.91f) { LED1=0; }
注意這里的62.91后面加f,如果不加會(huì)報(bào)警告:
:單精度操作數(shù)隱式轉(zhuǎn)換為雙精度
當(dāng)if(sum_num == 62.91) { LED1=0; }
這里的sum_num是浮點(diǎn)型,而62.91默認(rèn)是雙精度類型的;
當(dāng)2個(gè)不同類型的變量 相加減時(shí),會(huì)將二者都轉(zhuǎn)換成較大一方的類型,
所以 浮點(diǎn)數(shù) 和 雙精度進(jìn)行判斷時(shí):浮點(diǎn)數(shù)會(huì)被轉(zhuǎn)換成雙精度.所以會(huì)報(bào)警告,告訴你這里進(jìn)行了這樣的操作.
當(dāng)if(sum_num == 62.91f) { LED1=0; }這里的62.91f
是將62.91轉(zhuǎn)換成浮點(diǎn)數(shù)
浮點(diǎn)數(shù) 和 浮點(diǎn)數(shù)進(jìn)行判斷 或者 計(jì)算,并不會(huì)轉(zhuǎn)換成雙精度,警告自然沒了
下面附上 我自己研發(fā)的一些筆記,也都是經(jīng)驗(yàn)

51單片機(jī)-自己整理.doc

102 KB, 下載次數(shù): 57, 下載積分: 黑幣 -5

經(jīng)驗(yàn)筆記

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:371450 發(fā)表于 2018-7-14 14:37 | 顯示全部樓層
自己先頂
回復(fù)

使用道具 舉報(bào)

ID:114583 發(fā)表于 2018-9-1 14:00 | 顯示全部樓層
總結(jié)的很棒,很受益
回復(fù)

使用道具 舉報(bào)

ID:409831 發(fā)表于 2021-1-23 17:41 | 顯示全部樓層
很好,謝謝分享!受教了。!
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线中文一区 | 天堂亚洲 | 欧美成年网站 | 国产成人99久久亚洲综合精品 | 日韩视频成人 | 欧美三级视频 | 亚洲欧洲一区二区 | 免费h在线 | 欧美日韩一区二区在线观看 | 99热热精品| 成人免费视频播放 | 欧美中文字幕在线观看 | 欧美a在线观看 | 亚洲一区二区三区在线播放 | 中文字字幕一区二区三区四区五区 | 精品亚洲一区二区三区 | 在线欧美亚洲 | 99热热热热 | 天天弄天天操 | 一级毛片观看 | 亚洲第一免费播放区 | 国产欧美日韩精品一区二区三区 | 综合一区二区三区 | 黄色毛片网站在线观看 | 国产精品视频999 | 天堂视频一区 | 91av大全 | 高清人人天天夜夜曰狠狠狠狠 | 国产精品久久久久久亚洲调教 | 国产高清精品一区 | 一级欧美 | 国产精品视频一区二区三区 | 亚洲入口 | 久久久久久999 | 精品一区av | 日本三级电影免费观看 | 狠狠婷婷综合久久久久久妖精 | 欧美自拍一区 | 九色在线观看 | 99精品国产一区二区三区 | 99久久婷婷国产综合精品首页 |