找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

[求助]二進制小數(shù)轉(zhuǎn)換十進制小數(shù)的捷徑!

[復(fù)制鏈接]
ID:5918 發(fā)表于 2008-10-15 11:19 | 顯示全部樓層 |閱讀模式

問題如下:現(xiàn)有一二進制 整數(shù) 1111 而我要把它表示為十進制小數(shù)點兩位有效數(shù)字?在DX18B20溫度小數(shù)轉(zhuǎn)換碰到的問題!要用最簡單直接的方法,不要出現(xiàn)2的負幾次方之類的轉(zhuǎn)換! 向高手求救謝謝!

補充問題:

用DS18B20精確到小數(shù)點后一位的溫度測量實現(xiàn)

DS18B20的測量溫度范圍為 -55°C~+125°C,在-10~+85°C范圍內(nèi),精度為±0.5°C

從DS18B20輸出的后4位就是小數(shù)點后的數(shù),其數(shù)值乘與0.0625就是實際的溫度,大家知道,在8位的51單片機中,做個乘法并不容易,而且DS18B20精度為±0.5°C,有的算法直接舍去從而精確到1°C

1,我看到有些程序用查表法確定精度,這是一個很好的方法!但查表法有它的弱點要列表!

2,也看到有同志用這樣的方法,

如果a是從18B20里讀來的低8位值

xiaoshu1 = (a&0x0f)*10/16; //小數(shù)第一位

xiaoshu2 = (a&0x0f)*100/16%10;//小數(shù)第二位

xiaoshu=xiaoshu1*10+xiaoshu2; //小數(shù)兩位

這里我就是弄不懂為什么是乘以十就是小數(shù)第一位 乘以一百就是小數(shù)第二位?

盡管精度是0.5C,沒有實際意義,但這種算法是有用的,就是不知道其原理?

所以引申問題:現(xiàn)有一二進制 整數(shù) N位 而我要把它表示為十進制小數(shù)點M位(M<N)有效數(shù)字?該怎樣進行轉(zhuǎn)換?

實際中肯定會有類似問題!

回復(fù)

使用道具 舉報

ID:5918 發(fā)表于 2008-10-15 19:04 | 顯示全部樓層

要頂  啊

回復(fù)

使用道具 舉報

ID:5857 發(fā)表于 2008-10-18 22:41 | 顯示全部樓層
我感覺可以用數(shù)組來代替,不過得好好編排一下才行。把0000-1111和小數(shù)對應(yīng)起來,定義宏也行。不知道可行不。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表