作者jeffy84123 (因为贴心所以是好人)
看板C_and_CPP
标题[问题] (急)浮点数用二进位表示
时间Tue Feb 24 22:22:41 2009
我用C++想写一个浮点数转成
在记忆体里的二进位表示的程式
但是一直失败
以下是程式码
union x
{
float a;
int b;
public:
x();
};
x::x(){
a=17.625;
int c=1;
for(int y=1;y<32;y++)
{
if(b&c==0)
{
cout<<"0";
}
else
{
cout<<"1";
}
c=c+1;
}
}
int main()
{
x();
system("pause");
}
请问我要怎麽改勒?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.73.175.159
1F:→ akasan:if( (b&c) == 0){ 02/24 22:48
2F:→ akasan:c=c<<1; 02/24 22:48
3F:→ akasan:这样应该就可以动了 02/24 22:49
4F:→ akasan:for(int y=0;y<32;y++) //<--应该从零开始? 02/24 22:50
5F:→ jeffy84123:虽然动了但是输出是错误的转换 02/24 22:51
6F:→ jeffy84123:怪怪 我怎麽会输出000000000000000101100011000001 02/24 22:53
7F:→ akasan:00000000000000001011000 11000001 0 <--反过来看 02/24 22:55
8F:→ jeffy84123:原来如此 我眼残了 ++" 02/24 22:58
9F:→ jeffy84123:接下来要把他倒过来用STACK 对吗?还是有更好的办法? 02/24 23:01
10F:→ jeffy84123:还是用ARRAY比较好 02/24 23:21
11F:→ jeffy84123:解决问题了 感谢akasan的帮忙 02/24 23:21
12F:推 tsaiminghan:c=0x80 倒算回去 02/24 23:22
13F:→ tsaiminghan:错了 c=0x8000 02/24 23:23
14F:推 reference1:根据搜寻结果 int *i = (int *)&f; 02/25 09:37
15F:→ akasan:to tsa 你应该是说0x80000000 不过这样会有问题 02/25 10:57
16F:→ akasan:要改成unsigned int 并且在最後加个u 02/25 11:00
17F:→ dustnone:这东西看起来好像昨天我们教授出的作业XD 02/25 14:31