float型たとえば
a=0.25
b=0.25でc = a | bなどのビットごとの論理和をとりたいのですが
VC++ではコンパイルエラーとなってしまいます。どなたか方法をご存知の方いませんでしょうか。
こんなんでえぇですか?
#include <iostream>
// sizeof(float) = sizeof(long) を前提としています。
union float_bits {
float fval;
long lval;
};
int main() {
float_bits fba, fbb, fbc;
fba.fval = 0.25;
fbb.fval = 0.25;
fbc.lval = fba.lval | fbb.lval;
std::cout << fbc.fval << std::endl;
}
共用体をとればいいことにきずきませんでした。
まだ試していませんが問題解決としたいと思います。どうも有り難うございました。
念のため注記。
浮動小数点数の内部構造の勉強の一環として、内部表現をそのまま使ったビット演算を
したい、というならεπιστημηさんの方法でよいのですが、もし、
・ 10進表記での 0.5 は2進表記で0.1
・ 10進表記での 0.25 は2進表記で0.01
・ 2進表記での0.1と0.01とのorは2進表記での 0.11、即ち10進表記での0.75
→ 10進表記での0.5と0.25とのorは0.75
という結果を期待しているのでしたら、浮動小数点数型を使った方法は使えません。