簡體   English   中英

C ++-對浮點值中的位進行運算

[英]C++ - Operating on the bits in a floating point value

我正在嘗試編寫一個將一組字節重新解釋為float的函數。 我已經看過一個Stackoverflow問題 ,這使我嘗試對字符數組進行reinterpret_cast<>()的工作,然后我開始嘗試將一個float拆分為char,然后再次對其進行重新組裝,但這只是給我看似隨機數而不是我的數字認為值應該是,因為每次輸出都不同。 一些不同的示例是:

1.58661e-038
3.63242e-038
2.53418e-038

float變量包含值5.2。

編譯代碼:

float f = 5.2;
unsigned char* bytes = reinterpret_cast<unsigned char*>(&f);
float f1 = reinterpret_cast<float&>(bytes);

std::cout << f1 << std::endl;

給我

1.75384e-038

當然,每次運行該程序時,編號都不同。 但是,有趣的是,如果將代碼放入循環中並在一次運行中執行幾次,輸出將保持一致。 這使我認為它可能是內存位置,但是如果是這樣,我不確定如何訪問變量的真實值-取消引用運算符不起作用,因為它不是指針。

所以我的問題是-如何將float類型的變量(以后是double )拆分為單個字節(允許我修改位),然后重新組裝它。

任何幫助將不勝感激。

bytes是一個指針

更改

float f1 = reinterpret_cast<float&>(bytes);

float f1 = *reinterpret_cast<float*>(bytes);
// Cast to a different pointer... ^
//         ^ ...and dereference that pointer.

暫無
暫無

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

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