找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

關(guān)于浮點(diǎn)運(yùn)算的一些問(wèn)題

[復(fù)制鏈接]
ID:202691 發(fā)表于 2017-5-22 18:14 | 顯示全部樓層 |閱讀模式
1、浮點(diǎn)運(yùn)算就是指整數(shù)運(yùn)算和實(shí)數(shù)運(yùn)算吧?  2、浮點(diǎn)運(yùn)算在單片機(jī)中怎樣進(jìn)行的?  3、浮點(diǎn)寄存器是什么意思?自動(dòng)匹配的工作寄存器組還是單片機(jī)內(nèi)有專門的? 第一次發(fā)帖,希望大神門能幫我解答一下,謝謝啦
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-5-24 01:48 | 顯示全部樓層
本帖最后由 yzwzfyz 于 2017-5-24 11:24 編輯

樓主所提的問(wèn)題,主要是對(duì)浮點(diǎn)數(shù)在計(jì)算機(jī)中長(zhǎng)成什么樣了不清楚。
樓主應(yīng)當(dāng)知道科學(xué)計(jì)數(shù)法(除0之外)的示數(shù)方式:A.B*10^N,如:3.123456*10^8,A=1-9,B、N=任意數(shù)字。
計(jì)算機(jī)里的浮點(diǎn)數(shù)有許多種表示方式,但都是模仿了科學(xué)計(jì)數(shù)法。
現(xiàn)舉其中在單片機(jī)中最常用的一種:
用四個(gè)字節(jié)表示一個(gè)浮點(diǎn)數(shù):X1、X2、X3、X4
X1是指數(shù)相當(dāng)于N,稱“階碼”或指數(shù);
X2X3X4構(gòu)成底數(shù)相當(dāng)于B。

符號(hào):用底數(shù)的最高位來(lái)表示正負(fù)。
X2.7=1表示負(fù)數(shù),X2.7=0表示正數(shù)。
如:(96H、C0H、23H、22H)中的C0H的最高位(C0H=11000000B)是1,所以是負(fù)數(shù)。
而:(96H、20H、23H、22H)中的20H的最高位(20H=00100000B)是0,則表示正數(shù)。

階碼:X1。

底數(shù):X2X3X4的特殊規(guī)定:
無(wú)論X2.7是0是1,都默認(rèn)為是1,也就是X2.7除表示符號(hào)之外,在底數(shù)中恒定認(rèn)為是1。
如:(96H、C0H、23H、22H)中的底數(shù)是:C02322H
而(96H、20H、23H、22H)中的底數(shù)也是:C02322H(最高位20H=00100000B隱含是1,即為10100000B=C0H)

小數(shù)點(diǎn)在何處:階碼的最大值=FFH,最小為00H,就取其中值80H為小數(shù)點(diǎn)的位置,如此浮點(diǎn)數(shù)的值就為:
X2X3X4 * 2^(X1-80H-18H),注:18H=24是因?yàn)榈讛?shù)X2X3X4有24位。

浮點(diǎn)數(shù)舉例:80000000H
底數(shù):000000H,符號(hào)=0,正數(shù),恢復(fù)隱含1之后為:800000H
階碼:80H
浮點(diǎn)數(shù)值=800000H * 2^(80H-80H-18H)=0.5

浮點(diǎn)數(shù)舉例:80800000H
底數(shù):800000H,符號(hào)=1,負(fù)數(shù),恢復(fù)隱含1之后為:800000H
階碼:80H
浮點(diǎn)數(shù)值=-800000H * 2^(80H-80H-18H)=-0.5

浮點(diǎn)數(shù)舉例:9803D600H
底數(shù):03D600H,符號(hào)=0,正數(shù),恢復(fù)隱含1之后為:83D600H
階碼:98H
浮點(diǎn)數(shù)值=83D600H * 2^(98H-80H-18H)=8640000
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-5-24 01:52 | 顯示全部樓層
另一種浮點(diǎn)數(shù)表示方式:
符號(hào)用X1.7表求,而8位階碼的前7位是X1.6-X1.0,階碼的最后一位是X2.7。
底數(shù)X2X3X4的最高位仍恒默認(rèn)=1。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-5-24 02:05 | 顯示全部樓層
可見(jiàn),浮點(diǎn)數(shù)的乘除還好,底數(shù)相乘除,階碼相加減。不過(guò)積商還要標(biāo)準(zhǔn)化,即必須保證底數(shù)最高位是1,否則就必須再對(duì)階(左右移底數(shù),并用減加階碼來(lái)補(bǔ)正)
而浮點(diǎn)數(shù)的加減法,就麻煩了,必須先對(duì)階(對(duì)其中的一個(gè)數(shù)對(duì)階,使其階碼與另一個(gè)數(shù)相同),即階碼必須相同,才能做加減。其和差也要做標(biāo)準(zhǔn)化。
可以浮點(diǎn)數(shù)的計(jì)算的復(fù)雜程度,是非浮點(diǎn)數(shù)的許多倍。
知道這些后,就應(yīng)該盡可能不用浮點(diǎn)計(jì)算,以提高程序速度,并節(jié)省空間、節(jié)省CPU時(shí)間。
但浮點(diǎn)計(jì)算有范圍廣的特點(diǎn)!
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-5-24 02:08 | 顯示全部樓層
關(guān)于浮點(diǎn)數(shù)的存放,愛(ài)放哪放哪。
所以樓主所提的:“浮點(diǎn)寄存器”、“工作寄存器組”等,是沒(méi)有意義的說(shuō)法。
如果你將浮點(diǎn)數(shù)放在“大門”,就叫“大門浮點(diǎn)數(shù)”好了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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