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

標題: 關于C語言中float、double類型的內存轉換 [打印本頁]

作者: toomark    時間: 2020-4-8 10:19
標題: 關于C語言中float、double類型的內存轉換
     C51 平臺上存在數據類型限制——double數據類型與float數據類型皆為32bites,使得double數據類型等同于float數據類型。

     當C51在與其它平臺做數據通信時,可能被要求提供64bites的double數據,但它無法用數據類型強轉實現。因此,專門寫了float轉double存儲的函數。

     有關float、double類型在內存中的具體存儲方式,可閱讀相關博文https://blog.csdn.net/slience_j/article/details/51965009
     實現float存儲轉double類型存儲的具體函數如下:
  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;                        // 指數
  17.         long *pdata = (long *)&f;        // 指針指向需轉換float數據

  18.         // 獲取float變量8位有效指數信息
  19.         index = (*pdata >>23)&0x00ff;        
  20.         // 將8位指數轉換為11位指數
  21.         if(index & 0x0080)                // 指數為正(bit7表示正負,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指數信息
  32.         pStrBob->data0 = (index>>4)&0x7f; // 將index的高7位(bit4~10位)數據放在低7位存儲
  33.         pStrBob->data1 = (index &0xf)<<4; // 將index的低4位(bit0~3位)數據放在高4位存儲

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

  43.         // 裝載尾數位(bit0~bit22共23位有效數據)
  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. }
復制代碼









歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 人人人艹 | 孕妇一级毛片 | 91麻豆产精品久久久久久夏晴子 | 欧美在线观看一区二区 | 成人影院网站ww555久久精品 | 欧美精品一区二区三区在线播放 | 亚洲欧美激情国产综合久久久 | 亚洲精品国产第一综合99久久 | 欧美在线视频一区二区 | 三级免费毛片 | 欧美激情第一区 | 欧美激情精品久久久久久免费 | 国产一区二区三区色淫影院 | 国产97碰免费视频 | 91av在线电影 | 久久久久国产精品一区二区 | 亚洲精品久久久久久久久久吃药 | 国产综合久久 | 毛片a区 | 亚洲人成在线播放 | 精品区一区二区 | 日韩午夜网站 | 精品国产精品国产偷麻豆 | 中文字幕 亚洲一区 | 亚洲精品一区二区三区蜜桃久 | 欧美高清免费 | 色欧美片视频在线观看 | 免费观看黄色一级片 | 久草青青草 | av综合站 | 宅男噜噜噜66一区二区 | 北条麻妃av一区二区三区 | 久草视频在线播放 | 久久人爽 | 一区二区不卡高清 | 亚洲一区二区三区免费在线观看 | 国产98色在线 | 日韩 | 午夜欧美一区二区三区在线播放 | 国产精品成人国产乱一区 | 综合久久综合久久 | 精品日韩一区二区三区av动图 |