欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11542|回復: 3
收起左側

C語言浮點數轉十六進制(經驗)

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


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

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

51單片機-自己整理.doc

102 KB, 下載次數: 57, 下載積分: 黑幣 -5

經驗筆記

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表