簡體   English   中英

C / C ++中的數值轉換

[英]Numerical Conversion in C/C++

我需要將C / C ++ double轉換為64位二進制補碼,其中Radix點位於第19位(包括第19位)。

這意味着對於我要轉換為的格式

  • 0x0000 0000 0010 0000是數字1
  • 0xFFFF FFFF FFF0 0000是數字-1
  • 0x0000 0000 0000 0001是0.95 x 10 ^ -6
  • 0xFFFF FFFF FFFF FFFF為-0.95 x 10 ^ -6

到目前為止,盡管我已經使用了C標准庫中的modf函數,但這並不能真正滿足我的需求。 我也看過Boost中的一些類型轉換類,但是我也找不到正確的解決方案。 有人知道做這種轉換的圖書館或簡單方法嗎? 也許更熟悉Boost的人可以為我指明正確的方向。

如果這完全有幫助,這里有一些有關如何存儲雙精度的文檔。

編輯:

我有一個后續問題,這確實是出於我自己的利益。 什么是“基數”? 這里有點像小數點。 但是,我唯一一次聽到“基數”這個詞是在我學習離散快速傅立葉變換時。 如果我沒記錯的話,Radix-II方法很快,因為計算DFT所需的乘數更少。

這應該給出您想要的結果:

double d = someValue();
int64_t fixed_point = static_cast<int64_t>(d * (1024*1024));

乘以2 ^ 20,然后轉換為您定位的整數類型(可能很長很長)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM