フロートのビット表現を知るために、期待どおりに機能するこのプログラムを実行しました。
float x1=-675.78125;
int *pint1;
pint1=(int *)&x1;
for(int i=0;i<8*sizeof(float);i++)
{
if(*pint1&1)
{
cout<<1;
}
else
cout<<0;
*pint1>>=1;
}
しかし、ダブルでは機能しません:
double x=-675.78125;
int *pint;
pint=(int *)&x;
for(int i=0;i<8*sizeof(double);i++)
{
if(*pint&1)
{
cout<<1;
}
else
cout<<0;
*pint>>=1;
}
なぜそうなのか説明していただけますか?どのようにしますか?手伝ってくれてどうもありがとう。