[問題] 怎麼存取float的2進位值?

看板C_and_CPP作者 (月餅狗)時間13年前 (2010/11/10 14:26), 編輯推噓2(202)
留言4則, 4人參與, 最新討論串1/1
我遇到的問題有兩個 問題1. 要怎麼取出float的前16個bit出來 因為float是32個bit,我想要把前16個bit 分成8個8個bit,個別存到一個char裡面 想問一下要怎麼直接取出那16個bit? 我想到的方法有 1.float一直往左shift看正負,shift一次可以得到一個bit 2.把它印到一個string以後,從string讀出來 感覺這兩個方法都很爛 想問一下有沒有什麼比較基本的作法? 問題2. 問題1的反向 如果我有兩個char總共16bit 要怎麼把這16bit存回float裡面? (mantissa少的16個bit補0) 原本想說寫程式算他真正的值存到float 後來覺得這方法也很爛 我都已經有bits了,為什麼還要用算的orz 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.208.64

11/10 14:28, , 1F
union
11/10 14:28, 1F

11/10 14:33, , 2F
unsign char* c = (unsign char*)&float;
11/10 14:33, 2F

11/10 15:34, , 3F
1.和0xff000000 0x00ff0000 0x0000ff00 0x000000ff 做AND
11/10 15:34, 3F

11/11 04:15, , 4F
union
11/11 04:15, 4F
文章代碼(AID): #1CsZiPdL (C_and_CPP)