float强转为int

当然要将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;
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值