当然要将float强转为int很简单可以直接写为定义一个float f变量,用(int)f强转为整形;
在此处我采用的是将内存的float给分离出来;将符号号,指数位,尾数进行分离。float中
符号位占一个字节,指数占8个字节,尾数占23个字节;将符号位进行右移31位,定义一个
变量将分离符号位进行保存,如果分离结果是0,则保存为1;如果是1,则保存为-1;然后
通过位运算依次分离,即可得到整数部分。
#include<stdio.h>
int Float_to_Int(const float f)
{
int p=*(int *)&f;
int symbol=0,index=0,m=0,k,i;
if(p>>31)
{
symbol=1;
}
index=p&0x7f800000;
index>>=23;
index-=127;
if(index>0)
{
i=1<<index;
m=p&0x7fffff;
while(--index>=0)
{
m<<=1;
k=(((m&0x800000)!=0)? 1:0);
i+=k<<index;
}
if(symbol==1)
{
i=-1;
}
}
if(index==0)
{
i=-1;
}
if(index==0)
{
i=1;
if(symbol==1)
{
i=-1;
}
}
return i;
}
{
int p=*(int *)&f;
int symbol=0,index=0,m=0,k,i;
if(p>>31)
{
symbol=1;
}
index=p&0x7f800000;
index>>=23;
index-=127;
if(index>0)
{
i=1<<index;
m=p&0x7fffff;
while(--index>=0)
{
m<<=1;
k=(((m&0x800000)!=0)? 1:0);
i+=k<<index;
}
if(symbol==1)
{
i=-1;
}
}
if(index==0)
{
i=-1;
}
if(index==0)
{
i=1;
if(symbol==1)
{
i=-1;
}
}
return i;
}