找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3527|回复: 0
收起左侧

将32位浮点数fval转换为32位整数

[复制链接]
ID:80436 发表于 2015-5-21 22:50 | 显示全部楼层 |阅读模式
//
// 将32位浮点数fval转换为32位整数并存储在ival中
// 小数部分将被裁剪掉
//
void TruncToInt32 (int &ival, float fval)
{
ival = *(int *)&fval;

// 提取尾数
// 注意实际的尾数前面还有一个被省略掉的1
int mantissa = (ival & 0x07fffff) | 0x800000;

// 提取指数
// 以23分界,指数大于23则左移,否则右移
// 由于指数用偏移表示,所以23+127=150
int exponent = 150 - ((ival > > 23) & 0xff);

if (exponent < 0)
ival = (mantissa < < -exponent);
else
ival = (mantissa > > exponent);

// 如果小于0,则将结果取反
if ((*(int *)&fval) & 0x80000000)
ival = -ival;
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表