内存中整数和浮点数的存储规则

请注意+星公共帐户,不要错过令人兴奋的内容。

作者|叶峰安排| strongHuang为什么我们的代码会强制浮点数和整数进行转换,或者打印出精度损失或出错?要了解此问题,您需要了解整数和浮点数的存储规则。

嵌入式第1列浮点数存储规则根据国际标准IEEE(电气与电子工程学会),任何浮点数NUM的二进制数都可以写为:NUM =(-1)^ S * M * 2 ^ E; (S表示符号,E表示阶乘,M表示有效数字)①当S为0时,表示正数;当S为1时,它表示一个负数; ②M代表有效数字,1③2^ E代表指数,例如十进制为3.0,如果二进制为0011.0,则可以表示为(-1)^ 0 * 1.1 * 2 ^1。

例如,十进制为-3.0,二进制系统为-0011.0,可以写为(-1)^ 1 * 1.1 * 2 ^1。

符号位(S)具有8个指数位(E)和23个有效数字(M) 。

双精度类型具有符号位(S),11个指数(E)和52个有效数字(M)以浮点类型为例:IEEE对(有效数字)M和(指数)E(采用浮点数)有特殊规定例如):1.因为M的值必须为1,所以可以节省空间。

以浮点类型为例,例如,您可以保存23位十进制信息,并添加四舍五入以使用23位数字表示24个有效信息。

2.对于E(指数),E是一个无符号整数,因此E的取值范围是(0〜255),但是指数在计数时可以为负,因此规定当E以其原始值存储时,将中间数字(127)到顶部,并且在使用中间数字(127)时将其减去,因此E的真实值范围变为(-127〜128)。

E有三种情况:①E不是全为0,也不是全为1:这时,使用常规计算规则。

E的真实值是E的文字值减去127(中间值),并且必须加上M的值。

第一个省略的1。

②E均为0。

此时,指数E等于1-127 ,这才是真正的价值。

M不与四舍五入后的1相加,而是减少为十进制的0.xxxxxxxx。

为了表示0,还有一些非常小的整数。

因此,将浮点数与0进行比较时,请注意。

③E全为1当M全为0时,表示±无穷大(取决于符号位);当M不全为1时,表示该数字不是数字(NaN)。

嵌入式框2的测试代码如下:void test(void){float m = 134.375; char * a =(char *)& m; printf(“ 0x%p:%d ",a,* a); printf(“ 0x%p:%d ",a + 1,*(a + 1)); printf(“ 0x%p:%d ",a + 2,*(a + 2)); printf(“ 0x%p:%d “,a + 3,*(a + 3));}代码输出结果:具体计算过程如下:嵌入式框3精度损失我们可以将小数部分乘以2,并将整数部分作为1中的一位。

binary,剩余的小数继续乘以2,直到没有剩余的小数为止。

例如,0.2可以转换为:0.2 x 2 = 0.4 0 0.4 x 2 = 0.8 0 0.8 x 2 = 1.6 1 0.6 x 2 = 1.2 1 0.2 x 2 = 0.4 0 0.4 x 2 = 0.8 0 0.8 x 2 = 1.6 1…即:.0011001…这是一个无限循环的二进制数,这就是为什么将十进制数转换为二进制数时会损失精度的原因。

您共享的单精度,双精度,多精度和混合精度计算之间有什么区别?也许您不太了解。

今天我读了浮点数的存储规则,你明白吗?嵌入式专栏4整数的存储规则了解了浮点数的存储规则之后,理解整数非常简单。

整数以补码形式存储在内存中,并且有正整数和负整数。

当需要存储带符号的数字时,第一位用于指示正​​数(0)和负数(1)。

正数的一个补码和补码本身仍然是,下面主要讨论负数的一个补码和补码。

反转码是除去最高符号位后的原始码的反转,其余位逐位反转,补码是除1之外的反转码。

测试码:void test(void){int8_t n = -123; uint8_t * p =(uint8_t *)& n; printf(“%d ",n); printf(“%d " * p);}输出结果:计算过程如下:资料来源:https://blog.csdn.net/u014470361/article/details/79820892免责声明:本文源自网络,并且版权属于原作者。

如果涉及版权问题,请与我联系以删除。

------------结束------------推荐阅读:特色摘要|列|目录|搜索特征

联系方式

NITSUKO日通工公司致力于设计、制造和生产。金属化薄膜电容器的销售始于80多年前。我国电容器在海外市场的良好声誉以及国内市场使我们成为最大和最有经验的供应商之一。我们实际制造的金属化薄膜电容在2000达到了25亿。通过我们的经验,我们可以满足任何需求。知识和广博的资源成为客户的首选。

查看详情

在线咨询