私は退屈で、double のバイナリ表現がどのように見えるかを見たいと思っていました。しかし、Windows で奇妙なことに気付きました。次のコード行は、
double number = 1;
unsigned long num = *(unsigned long *) &number;
cout << num << endl;
私の Macbook では、これによりゼロ以外の数値が得られます。私のWindowsマシンでは、0になります。
double としての 1.0 のバイナリ表現はすべてゼロであってはならないため、ゼロ以外の数値が返されることを期待していました。ただし、私がやろうとしていることが明確に定義された動作であるかどうかはよくわかりません。
私の質問は、上記のコードは愚かで間違っているのでしょうか? また、double のバイナリ表現を出力する方法はありますか?
ありがとう。