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

標題: MCU將8位AD采集到的值轉換成實際值遇到的坑求解 [打印本頁]

作者: sdarling    時間: 2021-3-31 04:19
標題: MCU將8位AD采集到的值轉換成實際值遇到的坑求解
MCU AD采集到的值dat從二進制轉換成10進制實際電壓值輸出中遇到了一些問題
采集到電壓值dat區間在0-255之間,實際參考位5V,講采集到的值做運算,輸出實際電壓值
1.unsigned char型的變量轉換成int型,為什么需要乘一個1.0.
2.為什么我將*1.0的位置放在變量dat后邊相乘和放在前邊相乘得到的值是不一樣的,放在前邊相乘呢值才是正確的,放后邊就一堆亂碼.

IMG_20210331_040834.jpg (1.22 MB, 下載次數: 75)

IMG_20210331_040834.jpg

作者: sdarling    時間: 2021-3-31 04:26
我看別人的程序,這個1.0放在變量后邊都沒問題,編譯器問題?看視屏里用的keil4,我用的keil5
作者: 張天師    時間: 2021-3-31 09:11
dat為0-255,那么500*dat最大值為127500。這里存在C語言運算類型轉換原則,,500*1.0就轉換為float運算,其類型是32位,500*1.0*dat其值不會溢出;而500*dat*1.0,就先以int類型運算再以浮點運算,而int運算時,有可能已經溢出了,結果就出錯。所以運算的類型及前后順序很重要,這就是稍不注意就出錯的原因
作者: liujunping11    時間: 2021-3-31 13:21
如果dat值為255,則temp11為500,遠遠大于255,8位無法表示,所以亂碼
作者: sdarling    時間: 2021-4-1 00:49
liujunping11 發表于 2021-3-31 13:21
如果dat值為255,則temp11為500,遠遠大于255,8位無法表示,所以亂碼

temp是int型,而且你這里理解是錯了,不管怎么算 temp都是要大于255的,我現在有問題的是這個運算順序,1.0放在變量dat前邊還是放在dat后邊相乘,兩個結果是不一樣的
作者: sdarling    時間: 2021-4-1 00:51
張天師 發表于 2021-3-31 09:11
dat為0-255,那么500*dat最大值為127500。這里存在C語言運算類型轉換原則,,500*1.0就轉換為float運算,其 ...

為什么uchar型的dat和500先運算,是以int型輸出而不是以char型嗎,是因為前邊變量temp的緣故?
作者: qinwf    時間: 2021-4-1 08:23
sdarling 發表于 2021-4-1 00:51
為什么uchar型的dat和500先運算,是以int型輸出而不是以char型嗎,是因為前邊變量temp的緣故?

uchar型dat和500運算是int型,因為500是int型常量




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美视频成人 | 国产精品久久国产精品久久 | 久久亚| 在线免费中文字幕 | 日韩久久久久 | 欧美黑人又粗大 | 欧美精品一区二区在线观看 | 欧美久久一区二区 | 亚洲美女网站 | 日本精品久久久久 | 欧美中文字幕一区二区三区亚洲 | 91久久久久久久久久久久久 | 欧美福利在线 | 午夜av电影 | 精品久久久久久亚洲国产800 | 久久国产精品免费一区二区三区 | 国产一级视频在线 | 本道综合精品 | 亚洲小视频在线播放 | 久久精品99国产精品日本 | 中文字幕二区 | 中文字幕在线视频一区二区三区 | 青青草综合网 | 亚洲人人| 欧美精品二区三区 | 国产亚洲网站 | 男人的天堂在线视频 | 久久久久一区二区三区 | 成人免费视频 | 久久一区二区视频 | 久久久91精品国产一区二区三区 | 亚洲电影一区二区三区 | 亚洲国产欧美一区 | 99精品国产一区二区三区 | 91视频a| 国产精品久久在线 | 亚洲国产成人久久综合一区,久久久国产99 | www亚洲精品 | 国产视频亚洲视频 | 国产日产欧产精品精品推荐蛮挑 | 欧美在线观看一区 |