float在内存中如何存储?
float为浮点型,32位机器中占4字节共32bit,下标0~31.
31 位:符号位,正数为0,负数为1。
30 位:方向位。小数点左移位1,右移为0。
23~29:共7位,指数位。=指数-1。
0~22:共23位,尾数。
转换方法:
1 整数部分转成二进制。整数不停的除2,直到商位0。逆序取出每次的余数。
2 小数部分转成二进制。小数部分不停的乘2,直到结果的小数部分位0.正序取出每次的商。
3 第一步和第二步得到数据拼接。第一步得到的结果在小数点左边,第二步得到的在小数点右边。转为科学计数法。
4 拼接。按照上面的bit说明填充。尾数不够,右边补0.
举例:写出8.25 12.5 0.25 都是如何在内存中保存。
8.25的存储计算方法:
- 整数部分8转成二进制:
8/2=4 余 0
4/2=2 余0
2/2=1 余0
1/2=0 余1 商位0 那么停止。 得到逆序 1000
2、小数部分0.25转位二进制:
0.25*2=0.5 整数部分 0
0.5*2=1.0 整数部分 1 次是小数部分为0 停止。得到正序 01
3、用2进制:
1000.01 = 1.00001 * 2的3次方。小数点左移了3位。
4、
31 :0
30: 1
指数位:3-1=2=0000010
尾数:0000 1000 0000 0000 0000 000
最终:0100 0001 0000 0100 0000 0000 0000 0000=0x41040000
以上可以看出 如果是-8.25 只需要最高位变为1即可。最终:1100 0001 0000 0100 0000 0000 0000 0000 = 0xC1040000
12.5的转换过程:
1 整数部分:
12/2 = 6 余 0
6/2=3 余 0
3/2=1 余1
1/2=0 余1
得到余数逆序 1100
2 小数部分:
0.5*2=1.0 整数为1
得到 1
3: 得到二进制:1100.1=1.1001*2的3次方
4: 0 1 0000010 1001 0000000000000000000 = 0x41480000
0.25转化过程
1 整数部分转换为 0
2 小数部分0.25
0.25*2=0.5 整数部分0
0.5*2=1.0 整数部分1
3 得到0.01 = 1.0*2的-2次方
4 得到:0 0 1111101 0000000000000000000000=0x3E800000 指数部分 -2-1=-3=FD=11111101 拿走7位
float在内存中如何存储?的更多相关文章
- Float在内存中的存储方式及IEC61131处理
Float在内存中的存储方式及IEC61131处理 1,fp32(32bits float)类型数据在存储器中占用4Bytes存储,且遵循IEEE-754标准: 一个浮点数分三部分组成: 符号位s(1 ...
- float 在内存中如何存储的
float类型数字在计算机中用4个字节存储.遵循IEEE-754格式标准: 一个浮点数有2部分组成:底数m和指数e 底数部分 使用二进制数来表示此浮点数的实际值指数部分 占用8bit的二进制数, ...
- C语言 float、double数据在内存中的存储方式
float在内存中占4个字节(32bit),32bit=符号位(1bit)+指数位(8bit)+底数位(23bit) 指数部分 指数位占8bit,可以表示数值的范围是0-(表示0~255一共256个数 ...
- <转载>浅谈C/C++的浮点数在内存中的存储方式
C/C++浮点数在内存中的存储方式 任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100.则在Intel CPU架构的系统中 ...
- C语言之数据在内存中的存储
C语言之数据在内存中的存储 在我们学习此之前,我们先来回忆一下C语言中都有哪些数据类型呢? 首先我们来看看C语言中的基本的内置类型: char //字符数据类型 short //短整型 int //整 ...
- 【C语言】浮点型在内存中的存储
1. 摘要 在了解到C语言中整型是以二进制补码形式存储在内存中后,我们不禁很好奇:那么浮点型的数据是以什么形式存储在内存中的呢? 实际上,早在1985年,电气电子工程师学会就制定了IEEE 754标准 ...
- 一个 -100.01 的double 在内存中怎么存储的. 一个中文String 在内存中占多少直接 utf-8 / GBK
一.-100.01 的double 在内存中怎么存储的 double双精度数据类型存储格式IEEE 双精度格式为8字节64位,由三个字段组成:52 位小数 f : 11 位偏置指数 e :以及 1 位 ...
- String在内存中如何存储(Java)
JDK1.8中JVM把String常量池移入了堆中,同时取消了“永久代”,改用元空间代替(Metaspace)java中对String对象特殊对待,所以在heap区域分成了两块,一块是字符串常量池(S ...
- 数据在内存中的存储方式( Big Endian和Little Endian的区别 )(x86系列则采用little endian方式存储数据)
https://www.cnblogs.com/renyuan/archive/2013/05/26/3099766.html 1.故事的起源 “endian”这个词出自<格列佛游记>.小 ...
随机推荐
- Win10系统,Jmeter 字体调整方法
找到jmeter所在目录--->bin--->jmeter.properties, 1.搜索jsyntaxtextarea.font.size,去掉#,把14改成更大的数字 2.修改右侧参 ...
- FPGA回忆记事(一):基于Nios II的LED实验
实验一:基于Nios II的LED实验 一. 创建Quartus II工程 1.打开Quartus II环境.开始->程序->Altera->Quartus II 9.1. 2 ...
- 一次Python操作数据库和excel过程
师从‘百测’besttest 最近牛大湿教了操作数据库和操作excel,写了一个小小的脚本,传入一个表名后,将表中所有数据写入excel中. 使用了pymysql,xlwt,需要自行安装. impor ...
- 基于DBMS_METADATA.GET_DDL函数批量导出索引的创建语句
/* 首先要说的DBMS_METADATA.GET_DDL是个好函数呀!新项目不知道哪个缺心眼建的同构库,只是见了表结构,并没有健非主键外的索引,领导让追加一版,以前只是会用视图拼sql创建,今天有学 ...
- javascript当中类型转换,typeof的用法
1)类型转换,typeof的用法 例 3.1.1 <HTML><head> <meta http-equiv="content-type" co ...
- (七)RequestMapping 和 Controller方法
文章目录 @[toc] RequestMapping功能 controller 方法返回值 RequestMapping功能 url映射 在定义 Controller 的,我们在方法上面,使用 @Re ...
- (八)Spring 事务管理
目录 文章目录 @[toc] **`Spring`** 事务管理 `Api` 介绍之 **`PlatformTransactionManager`** 后记 #Spring 的事务管理 编程式事务管理 ...
- PHP max_input_var设为了1000导致post数组太多时无法接受后面的参数值
PHP max_input_var设为了1000导致post数组太多时无法接受后面的参数值 下午突然接到格力电话说无法批量设置门店任务,但是在测试环境下无法重现,测试环境下好好的. 然后登陆到生产环境 ...
- xtrabackup原理,整库,单表,部分备份恢复
物理备份xtrabackup原理 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Pe ...
- Oracle笔记2
24.复杂查询的三道题 # 案例一:列出与SCOTT从事相同工作的所有员工及部门名称.人数.平均工资 GROUP BY使用限制: 查询语句中没有GROUP BY,则SELECT子句中只能出现统计函数; ...