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

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

QQ登錄

只需一步,快速開始

搜索
查看: 2864|回復(fù): 15
打印 上一主題 下一主題
收起左側(cè)

求教浮點(diǎn)數(shù)的十進(jìn)制轉(zhuǎn)十六進(jìn)制原理和代碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1041056 發(fā)表于 2022-8-4 21:02 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
50黑幣
eg:1對(duì)應(yīng)3F800000
100對(duì)應(yīng)42C80000

十進(jìn)制是double類型,十六進(jìn)制是字符
在線轉(zhuǎn)換鏈接如下,可供驗(yàn)證
ToolTT在線工具箱

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:584814 發(fā)表于 2022-8-5 08:14 | 只看該作者
浮點(diǎn)數(shù)的十進(jìn)制轉(zhuǎn)十六進(jìn)制原理可百度
浮點(diǎn)數(shù)的十進(jìn)制轉(zhuǎn)十六進(jìn)制代碼可百度
回答完畢
回復(fù)

使用道具 舉報(bào)

板凳
ID:123289 發(fā)表于 2022-8-5 08:20 | 只看該作者
計(jì)算機(jī)只認(rèn)識(shí)二進(jìn)制數(shù),它不認(rèn)識(shí)【負(fù)】、【小數(shù)點(diǎn)】。怎么辦呢?就人為規(guī)定一下。
規(guī)定,也就是協(xié)議。只要“計(jì)算機(jī)”(其實(shí)是使用的人)能遵守這個(gè)協(xié)議,也就認(rèn)識(shí)【負(fù)】、【小數(shù)點(diǎn)】了。
顯然,協(xié)議規(guī)定不同,負(fù)數(shù)、小數(shù)的表示方式也就不同(建議在一個(gè)系統(tǒng)中,用同樣的協(xié)議)。
就樓主的問(wèn)題,稍候給出兩種常用的浮點(diǎn)數(shù)的表示方式。
關(guān)鍵點(diǎn):負(fù)號(hào)在哪?小數(shù)點(diǎn)在哪?
回復(fù)

使用道具 舉報(bào)

地板
ID:883242 發(fā)表于 2022-8-5 08:44 | 只看該作者
你只管用就可以了,無(wú)需知道具體代碼。但凡是支持浮點(diǎn)數(shù),包括float和/或double的編譯器,必定在函數(shù)庫(kù)里面實(shí)現(xiàn)了你所需要的功能。
回復(fù)

使用道具 舉報(bào)

5#
ID:401564 發(fā)表于 2022-8-5 08:45 | 只看該作者
原理就是IEEE規(guī)定的數(shù)據(jù)存放格式,我到現(xiàn)在都不知道怎么轉(zhuǎn)換
但這并不影響我用C語(yǔ)言寫程序
我不知道你要知道浮點(diǎn)型轉(zhuǎn)換成16進(jìn)制有什么用?
回復(fù)

使用道具 舉報(bào)

6#
ID:123289 發(fā)表于 2022-8-5 09:01 | 只看該作者
兩種四個(gè)字節(jié)組成的浮點(diǎn)數(shù):(一般夠用了,如果要求特別,當(dāng)然可以增加字節(jié)數(shù),重新定義)
先給出四個(gè)字節(jié):通常從存放的位置看,從低地址至高地址(反之只有你能說(shuō)清楚也可以),A1,A2,A3,A4。
再細(xì)分:A1.0-A1.7,A2.0-......,A4.0-A4.7。
為了方便說(shuō)明重新定義一下:A4.7=D31,A4.6=D30....,A1.7=D7,......,A1.0=D0,這樣就得到一個(gè)數(shù):D31,D30,......,D0。
浮點(diǎn)數(shù)的第一種表示方式:階碼=D30~D23,符號(hào)=D31,底數(shù)=1(最高位隱1)+D22~D0 1=3F800000,2=40000000  【我在STM8用過(guò)】
浮點(diǎn)數(shù)的第二種表示方式:階碼=D31~D24,符號(hào)=D23,底數(shù)=1(最高位隱1)+D22~D0 1=7F000000,2=80000000  【我在51中用過(guò)】
不同的編譯平臺(tái)或軟件,可能采用不同的表示方式,亦或是有人故意的。不過(guò)不用擔(dān)心,同一個(gè)平臺(tái)是不可能混淆的。
回復(fù)

使用道具 舉報(bào)

7#
ID:844772 發(fā)表于 2022-8-5 09:44 | 只看該作者
我試試說(shuō)一下,不講單精度了,只說(shuō)你要的雙精度,雙精度浮點(diǎn)是8字節(jié),64位,最高位是符號(hào)位,顯示正負(fù),接著11位是指數(shù)位,剩余52位是小數(shù)位。它的保存是用科學(xué)計(jì)數(shù)法保存數(shù)值,也就是說(shuō)任何數(shù)都以,二進(jìn)制的小數(shù)和二進(jìn)制的指數(shù)表示,例子看你的鏈接就明白。另外,指數(shù)也有正負(fù),所以指數(shù)統(tǒng)一加偏移量1023后存儲(chǔ)。別看說(shuō)的麻煩,程序及其簡(jiǎn)單,因?yàn)槭褂脧?qiáng)制類轉(zhuǎn)換,一句搞掂。
double fff=1.0;  //
unsigned char *htext=(unsigned char *)& fff; //其實(shí)就這一句就轉(zhuǎn)成十六進(jìn)制了。
//下面驗(yàn)證一下 htext必然是八字節(jié)啊,只是有的系統(tǒng)是從小到大排列
for ( char i=0;i<8;i++)
  printf (" %02x",htext[7-i]);

回復(fù)

使用道具 舉報(bào)

8#
ID:123289 發(fā)表于 2022-8-5 09:52 | 只看該作者
本帖最后由 yzwzfyz 于 2022-8-5 10:08 編輯

解碼:浮點(diǎn)數(shù)的值 = [符號(hào)]底數(shù) * 2^(階碼-(7FH+23)) = [符號(hào)]底數(shù) * 2^(階碼-96H)
23:(這里用10進(jìn)制寫是為了方便您理解),因?yàn)榈讛?shù)有24位,其最高位的1就代表2^23。
階碼:小數(shù)點(diǎn)的位置。
7FH:(這里用16進(jìn)制寫是突出一個(gè)字節(jié)0-FFH的中位數(shù)7FH,用10進(jìn)制寫成127也一樣),這樣階碼表示的小數(shù)點(diǎn)位置向左向右有127位移動(dòng)空間。

符號(hào):占1位,1為負(fù)數(shù),0為正數(shù)。
階碼:占8位,無(wú)符號(hào)數(shù)=0-FFH(0-255),理解為方次,階碼=75,就表示:2的75次方。也可以理解為小數(shù)點(diǎn)的位置。
底數(shù):24位,正常的數(shù),補(bǔ)碼,只剩余23位:D22-D0,何來(lái)24位呢?
特別注意:強(qiáng)制規(guī)定(也是妙處),底數(shù)雖然沒(méi)有D23,但就是認(rèn)為有D23,且D23=1。D23是隱含1!
如果實(shí)際中D23偏偏是0呢?比如底數(shù)據(jù)=0111010……(如果實(shí)際底數(shù)首位D23=0)。
沒(méi)有關(guān)系,通過(guò)將底數(shù)左移,必能使首位D23=1,本例左移一位即變成111010……,D23就=1了,再將階碼減去左移的位數(shù),本例階碼-1就平衡掉底數(shù)的左移了。
回復(fù)

使用道具 舉報(bào)

9#
ID:123289 發(fā)表于 2022-8-5 10:28 | 只看該作者
本帖最后由 yzwzfyz 于 2022-8-5 14:39 編輯

1對(duì)應(yīng)3F800000
100對(duì)應(yīng)42C80000
浮點(diǎn)數(shù)格式:階碼=D30~D23,符號(hào)=D31,底數(shù)=1(最高位隱1)+D22~D0

解:3F800000 = 00111111,10000000,0000H
首位:D31 = 0,正數(shù)。
階碼:D30-D23 = 0111111,1 = 7FH
底數(shù):D22-D0 = 0000000,0000H,D23強(qiáng)制隱含=1,即底數(shù) = 10000000,0000H = 800000H
解碼:3F800000的值 = 800000H * 2^(7FH-(7FH+23)) = 800000H * 2^(-23) = 1

解:42C80000 = 01000010,11001000,0000H
首位:D31 = 0,正數(shù)。
階碼:D30-D23 = 1000010,1 = 85H
底數(shù):D22-D0 = 1001000,0000H,D23強(qiáng)制隱含=1,即底數(shù) = 11001000,0000H = C80000H
解碼:42C80000的值 = C80000H * 2^(85H-96H) = 13107200 * 2^(-17) = 100
回復(fù)

使用道具 舉報(bào)

10#
ID:123289 發(fā)表于 2022-8-5 11:26 | 只看該作者
浮點(diǎn)數(shù)的十進(jìn)制轉(zhuǎn)十六進(jìn)制原理:
第一、這里有個(gè)誤區(qū):浮點(diǎn)數(shù)的十進(jìn)制?
浮點(diǎn)數(shù)在計(jì)算機(jī)的內(nèi)存里,幾乎都是以二進(jìn)制格式存儲(chǔ)的,如果你要強(qiáng)行將其轉(zhuǎn)成10進(jìn)制,那么又有新的問(wèn)題出現(xiàn),10進(jìn)制的表達(dá)方式是什么?
如123456,可以用6個(gè)字節(jié)表示:01H,02H,03H,04H,05H,06H。也可以用3個(gè)字節(jié)表示,即BCD碼:12H,34H,56H。
不懂匯編語(yǔ)言,是不太好理解的。
第二、如果浮點(diǎn)數(shù)有小數(shù),在16進(jìn)行中如何表示小數(shù)呢?如:3.14。
這個(gè)問(wèn)題涉及浮點(diǎn)數(shù)與定點(diǎn)數(shù)。比如,用4個(gè)字節(jié)來(lái)表示,前三個(gè)字節(jié)表示整數(shù),后一個(gè)字節(jié)表示小數(shù)(這叫定點(diǎn)數(shù),規(guī)定了小數(shù)點(diǎn)的位置,看似簡(jiǎn)單,卻有難點(diǎn)!)。
難點(diǎn)1:整數(shù)有限制,不能大于FFFFFFH=16777215,否則溢出,這還好說(shuō)好解決。
難點(diǎn)2:更麻煩的是,小數(shù)0.14,你幾乎想象不出它的如何寫!
以3.5為例:3.5可以寫成:00H,00H,03H,80H。
能不能寫成:00H,00H,03H,05H呢?不能!你做個(gè)3.5+3.5就知道為何,16進(jìn)制的0.5為何要寫成80H而不是05H了。
討厭的小數(shù)部分0.14如何用16進(jìn)行表達(dá),就不在這里繁瑣了,還是那句話:不懂匯編語(yǔ)言,是不太好理解的。(3.14在這里只能近似地寫成00H,00H,03H,24H,而不是00H,00H,03H,14H,小數(shù)部分要先乘以256,然后而存入整數(shù)部分)
樓主要:【求教浮點(diǎn)數(shù)的十進(jìn)制轉(zhuǎn)十六進(jìn)制原理和代碼】,建議先學(xué)通匯編。
否則:就聽取樓上其它人的建議吧。
不是不講給你聽,而是比較復(fù)雜,你也缺一些課,不易簡(jiǎn)單地就能讓你明白。
回復(fù)

使用道具 舉報(bào)

11#
ID:57657 發(fā)表于 2022-8-5 12:23 | 只看該作者
Y_G_G 發(fā)表于 2022-8-5 08:45
原理就是IEEE規(guī)定的數(shù)據(jù)存放格式,我到現(xiàn)在都不知道怎么轉(zhuǎn)換
但這并不影響我用C語(yǔ)言寫程序
我不知道你要知 ...

浮點(diǎn)數(shù)的傳輸、存儲(chǔ)可以用union結(jié)構(gòu)進(jìn)行轉(zhuǎn)換。
回復(fù)

使用道具 舉報(bào)

12#
ID:1034262 發(fā)表于 2022-8-5 15:07 | 只看該作者
不是編譯器處理的嗎?不需要自己寫程序的。
回復(fù)

使用道具 舉報(bào)

13#
ID:462768 發(fā)表于 2022-8-5 17:29 | 只看該作者
這種底層的東西,禁止轉(zhuǎn)換,編程入門書上就有
回復(fù)

使用道具 舉報(bào)

14#
ID:139866 發(fā)表于 2022-8-9 13:48 | 只看該作者
m2006410 發(fā)表于 2022-8-5 17:29
這種底層的東西,禁止轉(zhuǎn)換,編程入門書上就有

你也說(shuō)了,是入門書,而且我估計(jì)不是嵌入式入門書
回復(fù)

使用道具 舉報(bào)

15#
ID:593706 發(fā)表于 2022-8-9 17:26 | 只看該作者
樓主詢問(wèn)的是用單片機(jī)轉(zhuǎn)換,還是用計(jì)算機(jī)轉(zhuǎn)換呀?如果是用計(jì)算機(jī)進(jìn)行轉(zhuǎn)換,我的貼子里有現(xiàn)成的轉(zhuǎn)換程序,如果是用單片機(jī)轉(zhuǎn)換,稍微復(fù)雜一些,單片機(jī)轉(zhuǎn)換主要有查表法和數(shù)組循環(huán)計(jì)算法
回復(fù)

使用道具 舉報(bào)

16#
ID:844772 發(fā)表于 2022-8-10 22:13 | 只看該作者
m2006410 發(fā)表于 2022-8-5 17:29
這種底層的東西,禁止轉(zhuǎn)換,編程入門書上就有

打錯(cuò)字了吧,是徑直轉(zhuǎn)換,還是個(gè)經(jīng)典程序
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜男人天堂 | 黄色一级免费 | 亚洲精品在| 欧美日韩一区二区在线播放 | 国产成人精品一区二区三区四区 | 中文字幕福利视频 | 在线观看免费av网站 | www.蜜桃av.com| 国产精品视频偷伦精品视频 | 天天操网| 一区二区日韩 | 成人国产一区二区三区精品麻豆 | 亚洲精品中文字幕 | 亚洲不卡在线观看 | 国产成人免费观看 | 亚洲欧美国产精品久久 | 国产精品一区二区视频 | 日韩av看片 | 国产激情亚洲 | 精品一区视频 | 青青草原综合久久大伊人精品 | 国产日韩视频在线 | 亚洲人成人一区二区在线观看 | 日韩在线观看视频一区 | 国产精品爱久久久久久久 | 中文字幕一二三区 | 久久精品视频播放 | 久久久久久亚洲精品不卡 | 久久夜色精品国产 | 日韩有码一区 | 成人网视频 | 在线免费看黄 | 精品少妇一区二区三区日产乱码 | 青青草精品 | 色999视频| 国产精品久久久精品 | 美女天天干天天操 | 久久久久久91 | 日韩高清国产一区在线 | 夜夜夜夜夜夜曰天天天 | 国产精品视频在 |