当前位置:首页 > 上门服务 >

ieee 754标准规定的32位浮点数(ieee32位浮点数计算器)

来源:原点资讯(www.yd166.com)时间:2023-12-01 09:03:03作者:YD166手机阅读>>

采用这种表示方式的结果是,两个浮点数之间的“间隔”是均匀的。什么意思?

比如说,我想表示浮点数1的话,那么我的二进制位就是:

0 01111111 00000000000000000000000

我想表示2的话,二进制位就是

0 10000000 0000000000000000000000

1和2之间,我能表示的数是有限的,比1大的浮点数,最小的值我只能取到

0 01111111 00000000000000000000001

也就是上述的m是2的-23次方,这就是浮点数的“精度”,于是,你可以看到c 标准库中有一个这个函数:

std::numeric_limits<float>::epsilon()

这个值就是2的-23次方!

还有一点,很明显,用上面的式子,我们没法把值精确地表示0,这显然是无法接受的。于是浮点标准就对e=0的情况做了额外的规定,也就是说当e等于0的时候浮点值就不是乘以1.m,而是乘以0.m。也就是说,如果有效值m是0的话,那么浮点值表示的数字就是0,没有歧义!

接着,如果1.m的1没有的话,我们能表示的最小的值就是0.000…1(2进制)*2(-126),也就是2(-126) * 2^(-23),大约是1.4012985 * 10 ^ (-45)。

我用下面的代码尝试做了输出:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

std::cout.precision(15); uint8_t array[4] = {0}; array[3] = 0x3F; array[2] = 0x80; float* f = reinterpret_cast<float*>(array); std::cout << "f = " << *f <<std::endl; uint8_t array1[4] = {0}; array1[3] = 0x3F; array1[2] = 0x80; array1[0] = 0x1; float* f1 = reinterpret_cast<float*>(array1); std::cout << "f1 = " << *f1 << std::endl; uint8_t array2[4] = {0}; array2[2] = 0x7F; array2[1] = 0xFF; array2[0] = 0xFF; float* f2 = reinterpret_cast<float*>(array2); std::cout << "f2 = " << *f2 << std::endl; uint8_t array3[4] = {0}; array3[0] = 0x1; float* f3 = reinterpret_cast<float*>(array3); std::cout << "f3 = " << *f3 << std::endl;

结果是:

ieee 754标准规定的32位浮点数,ieee32位浮点数计算器(5)

与预想的一致。

最后,IEEE 754标准保证-0.0严格等于0.0!

如果e等于255,这种情况同样会被特殊处理。e=255,m=0的话,这就表示无限大,用cout输出就是inf。但如果e=255,m!=0的话,那么这就是一个无效值,输出的结果是nan,尝试代码和结果如下:

1 2 3 4 5 6 7 8 9

uint8_t array4[4] = {0}; array4[3] = 0x7F; array4[2] = 0x80; float* f4 = reinterpret_cast<float*>(array4); std::cout << "f4 = " << *f4 << std::endl; uint8_t array5[4] = {0}; array5[3] = 0x7F; array5[2] = 0x80; array5[0] = 0x3F; float* f5 = reinterpret_cast<float*>(array5); std::cout << "f5 = " << *f5 << std::endl;

ieee 754标准规定的32位浮点数,ieee32位浮点数计算器(6)

于是,我们能表示的最大有效值是1.1111111(二进制)* 2 ^ 127,也就是3.402823… * 10^38。测试代码和结果如下:

uint8_t array6[4] = {0}; array6[3] = 0x7F; array6[2] = 0x7F; array6[1] = 0xFF; array6[0] = 0xFF; float* f6 = reinterpret_cast<float*>(array6); std::cout << "f6 = " << *f6 << std::endl;

ieee 754标准规定的32位浮点数,ieee32位浮点数计算器(7)

如何理解Nvidia英伟达的Multi-GPU多卡通信框架NCCL

AI算力加速之道

上一页12末页

栏目热文

怎么用ieee754表示单精度浮点数(ieee 754浮点数怎么换算成16进制)

怎么用ieee754表示单精度浮点数(ieee 754浮点数怎么换算成16进制)

我们日常使用的各类数据,都是以二进制的方式存储的。以浮点数为例,在PLC中其表示方式使用了IEEE 754标准。许多编程...

2023-12-01 08:56:40查看全文 >>

ieee浮点数表示方法(ieee单精度浮点数转换十进制)

ieee浮点数表示方法(ieee单精度浮点数转换十进制)

In a floating-point representation, a value’s binary point i...

2023-12-01 09:03:53查看全文 >>

怎么关闭爱奇艺阅读模式(爱奇艺小说会员怎么取消)

怎么关闭爱奇艺阅读模式(爱奇艺小说会员怎么取消)

每经记者:温梦华 张春楠 每经编辑:杜毅“我们从2016年就有提出爱奇艺文学要做会员,在经过一段时间摸索之后,我们在20...

2023-12-01 09:14:58查看全文 >>

爱奇艺小说怎么退出阅读(爱奇艺小说如何进入书城)

爱奇艺小说怎么退出阅读(爱奇艺小说如何进入书城)

天眼查数据显示,4月14日,轻文轻小说的运营主体武汉空文网络科技有限公司发生一系列变更,北京爱奇艺科技有限公司、高榕资本...

2023-12-01 09:15:36查看全文 >>

爱奇艺怎么改书封面(爱奇艺作品封面怎么设置)

爱奇艺怎么改书封面(爱奇艺作品封面怎么设置)

IT之家9月4日消息 根据网友投稿,近日优秀UWP开发者爱奇艺推出了5.4版本更新,主要加入了页面切换动画,另外还优化了...

2023-12-01 08:25:55查看全文 >>

将十进制转换为ieee754标准浮点数(十进制转浮点数的方法)

将十进制转换为ieee754标准浮点数(十进制转浮点数的方法)

1 什么是比特?比特(bit,binary digit的缩写)中文翻译为“二进位数字”、“二进位” 或简称为 “位”。比...

2023-12-01 08:31:35查看全文 >>

十进制与ieee754标准转换原理(将ieee754标准转换为十进制)

十进制与ieee754标准转换原理(将ieee754标准转换为十进制)

本文功能:浮点数0.1 0.2 不等于 0.3的前置知识点我们知道js存储number类型的数据采用的是IEEE 7...

2023-12-01 08:58:05查看全文 >>

单精度浮点数通俗解释(单精度浮点数举例)

单精度浮点数通俗解释(单精度浮点数举例)

大家好,我是站长 polarisxu。团队一直保持着分享的习惯,而我却分享的较少。忘了当时同事分享什么主题,涉及到浮点数...

2023-12-01 08:50:23查看全文 >>

单精度浮点数报文举例(单精度浮点数的例子)

单精度浮点数报文举例(单精度浮点数的例子)

Modbus协议存在用于串口、以太网、专用网络的版本。各版本的Modbus通信协议在数据模型和功能调用上都是相同的,只有...

2023-12-01 09:10:27查看全文 >>

ieee754尾数用什么表示(如何用ieee754标准表示一个浮点数)

ieee754尾数用什么表示(如何用ieee754标准表示一个浮点数)

浮点数在计算中如何存储?浮点数在计算机中是如何存储的你知道吗?IEEE754是计算机浮点数格式标准,S代表符号位,0为正...

2023-12-01 09:05:29查看全文 >>

文档排行