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

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

QQ登錄

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

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

關(guān)于C語(yǔ)言中float、double類型的內(nèi)存轉(zhuǎn)換

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:724590 發(fā)表于 2020-4-8 10:19 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
     C51 平臺(tái)上存在數(shù)據(jù)類型限制——double數(shù)據(jù)類型與float數(shù)據(jù)類型皆為32bites,使得double數(shù)據(jù)類型等同于float數(shù)據(jù)類型。

     當(dāng)C51在與其它平臺(tái)做數(shù)據(jù)通信時(shí),可能被要求提供64bites的double數(shù)據(jù),但它無(wú)法用數(shù)據(jù)類型強(qiáng)轉(zhuǎn)實(shí)現(xiàn)。因此,專門寫了float轉(zhuǎn)double存儲(chǔ)的函數(shù)。

     有關(guān)float、double類型在內(nèi)存中的具體存儲(chǔ)方式,可閱讀相關(guān)博文https://blog.csdn.net/slience_j/article/details/51965009
     實(shí)現(xiàn)float存儲(chǔ)轉(zhuǎn)double類型存儲(chǔ)的具體函數(shù)如下:
  1. #pragma pack(1)
  2. struct DOUBLE_MEM
  3. {
  4.         char data0;
  5.         char data1;
  6.         char data2;
  7.         char data3;
  8.         char data4;
  9.         char data5;
  10.         char data6;
  11.         char data7;
  12. };
  13. #pragma pack()

  14. void float_to_double(float f, struct DOUBLE_MEM *pStrBob)
  15. {
  16.         short index;                        // 指數(shù)
  17.         long *pdata = (long *)&f;        // 指針指向需轉(zhuǎn)換float數(shù)據(jù)

  18.         // 獲取float變量8位有效指數(shù)信息
  19.         index = (*pdata >>23)&0x00ff;        
  20.         // 將8位指數(shù)轉(zhuǎn)換為11位指數(shù)
  21.         if(index & 0x0080)                // 指數(shù)為正(bit7表示正負(fù),bit0~6為大小)
  22.         {
  23.                 index &= 0x007f;        // bit7~15置0
  24.                 index |= 0x0400;        // bit10  置1
  25.         }else
  26.         {
  27.                 index |= 0xff80;        // bit 7~15置1
  28.                 index &= 0x03ff;        // bit10~15置0
  29.         }
  30.         
  31.         // 裝載index指數(shù)信息
  32.         pStrBob->data0 = (index>>4)&0x7f; // 將index的高7位(bit4~10位)數(shù)據(jù)放在低7位存儲(chǔ)
  33.         pStrBob->data1 = (index &0xf)<<4; // 將index的低4位(bit0~3位)數(shù)據(jù)放在高4位存儲(chǔ)

  34.         // 裝載符號(hào)信息(存放在最高位)
  35.         if(*pdata & 0x80000000)
  36.         {
  37.                 pStrBob->data0 |= 0x80;
  38.         }
  39.         else
  40.         {
  41.                 pStrBob->data0 &= 0x7f;
  42.         }

  43.         // 裝載尾數(shù)位(bit0~bit22共23位有效數(shù)據(jù))
  44.         pStrBob->data1 |= (*pdata >>19)&0x0f;        // 將bit19~22  放至data1的低4位
  45.         pStrBob->data2 = (*pdata >>11)&0xff;        // 將bit11~18  放至data2
  46.         pStrBob->data3 = (*pdata >>3)&0xff;        // 將bit3~bit10放至data3
  47.         pStrBob->data4 = (*pdata &0x7)<<5;        // 將bit0~bit2 放至data4的高3位
  48.         pStrBob->data4 &= 0xe0;                        // data4的低5位清零
  49.         pStrBob->data5 = 0x0;
  50.         pStrBob->data6 = 0x0;
  51.         pStrBob->data7 = 0x0;
  52. }
復(fù)制代碼




評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

無(wú)效樓層,該帖已經(jīng)被刪除

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 性高湖久久久久久久久3小时 | 欧美专区在线 | 国产精品完整版 | 国产精品99久久久久久大便 | 在线国产视频 | 日韩成人在线看 | 欧美a在线| 中文字幕不卡在线观看 | 久久看精品| 丁香久久| 在线视频一区二区 | 一级做a爰片性色毛片 | 日本免费一区二区三区四区 | 精品国产91亚洲一区二区三区www | 久久久久国产精品午夜一区 | 亚洲一本 | 精品欧美一区二区三区久久久 | 亚洲中国字幕 | 日韩欧美三区 | 亚洲国产精品一区二区第一页 | 亚洲欧美日本在线 | 国产日韩一区二区三区 | 九九视频在线观看视频6 | 久久精品亚洲精品国产欧美 | 日本精品久久久久久久 | 日韩一区在线观看视频 | 亚洲欧美日韩精品 | 嫩草懂你的影院入口 | 国产精品成人一区二区三区 | 毛片在线免费播放 | 午夜电影网站 | 亚洲第一福利视频 | 国产精品免费一区二区 | 风间由美一区二区三区在线观看 | 国产精品久久久久久久久久尿 | 青春草国产 | 亚洲欧美一区二区三区在线 | www.久草.com| 羞羞在线视频 | 欧美成人一级 | 久久久久久国产精品 |