float类型数字在计算机中用4个字节存储。遵循IEEE-754格式标准:
一个浮点数有2部分组成:底数m和指数e

底数部分 使用二进制数来表示此浮点数的实际值
指数部分 占用8bit的二进制数,可表示数值范围为0-255

但是指数可正可负,所以,IEEE规定,此处算出的次方必须减去127才是真正的指数。
所以,float类型的指数可从-126到128

底数部分实际是占用24bit的一个值,但是最高位始终为1,所以,最高位省去不存储,在存储中占23bit
科学计数法。

格式:
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
S表示浮点数正负
E指数加上127后的值得二进制数据
M底数

举例:
17.625在内存中的存储

首先要把17.625换算成二进制:10001.101

整数部分,除以2,直到商为0,余数反转。
小数部分,乘以2,直到乘位0,进位顺序取。

在将10001.101右移,直到小数点前只剩1位:
1.0001101 * 2^4 因为右移动了四位

这个时候,我们的底数和指数就出来了
底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好。所以,此处的底数为:0001101
指数:实际为4,必须加上127(转出的时候,减去127),所以为131。也就是10000011
符号部分是整数,所以是0
综上所述,17.625在内存中的存储格式是:
01000001 10001101 00000000 00000000

IEEE 754 测试程序(C#)

private void button1_Click(object sender, EventArgs e)
{
//首先是 十进制 转 IEEE754浮点数
// UInt32 x = 0x41280000;
// float p = BitConverter.ToSingle(BitConverter.GetBytes(x), 0);
// textBox1.Text = p.ToString(); //p的结果为10.5

//其次是 IEEE754浮点数 转 十进制
// float f = 10.5f;
// UInt32 y = BitConverter.ToUInt32(BitConverter.GetBytes(f), 0);
// textBox2.Text = Convert.ToString (y,16);
//y的结果为0x41280000

UInt32 z = 0;
if (textBox4.Text == "")
{
MessageBox.Show("空的,算个毛啊!");
}
else
{
z = Convert.ToUInt32(textBox4.Text.Replace(" ", ""), 16);
float q = BitConverter.ToSingle(BitConverter.GetBytes(z), 0);
textBox3.Text = q.ToString();
}
}

private void button2_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("空的,算个毛啊!");
}
else
{
float f = Convert.ToSingle(textBox1.Text);
UInt32 y = BitConverter.ToUInt32(BitConverter.GetBytes(f), 0);
textBox2.Text = Convert.ToString(y, 16);
}
}

最新文章

  1. halcon车牌的识别
  2. Acdream 1111:LSS(水题,字符串处理)
  3. 用div,ul,input模拟select下拉框
  4. 一致性哈希算法(consistent hashing)【转】
  5. java 动态创建数据库和动态连接数据库
  6. [原创]VS2013 EF6连接MySql需要几步?
  7. input标签上传图片怎么获取src;
  8. Oracle CheckPoint进程
  9. 常用精品API接口汇总
  10. Sql Prompt---Unable to connect to the Redgate Client Service
  11. mybatis-plus快速入门使用
  12. usb_camera
  13. python 创建实例--待完善
  14. 转载:SDWebImage支持URL不变时更新图片内容
  15. CM记录-CDH大数据平台实施经验总结2016(转载)
  16. 7-11Zombie's Treasure Chest uva12325
  17. Windows 以管理员运行而不提示
  18. Maven 多项目依赖,需要验证artifact的output root中是否包含其他项目输出
  19. linux route命令的使用详解 添加永久静态路由 tracert traceroute
  20. PyQt5 中调用MySql接口失败 ( QSqlDatabase 组件) 在Linux环境下如何修改

热门文章

  1. 还原网站上被压缩的JS代码方便阅读
  2. 分享一个导航条哈(⊙o⊙)…
  3. 使用css3来实现边框圆角效果
  4. (7)UI(基础对象)
  5. 表单元素的写法及与后台php的交互
  6. 彻底理解数字图像处理中的卷积-以Sobel算子为例
  7. HDU 1708 简单dp问题 Fibonacci String
  8. django 1.5+ 权限设计浅析
  9. Linux生产服务器Shell脚本分享
  10. SpringMVC请求处理流程