浮点数在内存中的存储格式
来源:互联网 发布:cad注册表清理软件 编辑:程序博客网 时间:2024/06/09 21:48
- #include
<iostream> - using
namespace std; - int
main( intargc, char*argv[]) - {
-
float a //浮点数在内存中是以符号+指数+尾数保存的= 1.0f; -
cout<<(int&)a<<endl;//1.0f在内存中的保存的是0x3f800000,将a地址开始的sizeof(int)个字节当做int类型的输出106535216 -
int b = 0x3f800000; -
cout<<b<<endl;//106535216 -
cout<<(int)a<<endl;//1 -
return 0; - }
符号部分:0(粉红背景处);
指数部分:127+0=127(黄色背景处)
底数部分:0(蓝色背景处)
转换为十进制就是:106535216
--------------------------------------------------------------------------------------------------------------------------------------
浮点数包括float和double两种类型,float占32位,double占64位。其二进制存储格式遵循IEEE754标准。以float为例:
1111011. 01110100101111001
首先这是一个正数,则符号位为0,
阶码为6,不过要转换成移码。
(如何求6的移码?这里我也不太深究,我见大家都是直接6+127=133,换为2进制为10000101)
(移码与补码的关系: [X]移与[X]补的关系是符号位互为相反数(仅符号位不同))
尾数则为1. 11101101110100101111001的小数部分,即
11101101110100101111001
综上:123.456的二进制存储格式为:01000010111101101110100101111001
-------------------------------------------------以下介绍浮点数的存储------------------------------------------------------
浮点数:
(注意,公式中的mantissa 和 exponent使用二进制表示)
举例1:计算机存储中的二进制数如何转换成实际浮点数
举例2:浮点数转换成计算机存储格式中的二进制数。
****************************************************************
double在内存中的保存,double是8个字节64位,其中最高位63位是符号位,1表示该数为负,0正;62-52位,一共11位是指数位;51-0位,一共52位是尾数位。
举例3:按照IEEE浮点数表示法,下面将把double型浮点数38414.4转换为十六进制代码。
把整数部和小数部分开处理:整数部直接化十六进制:960E。小数的处理:
- 浮点数在内存中的存储格式
- 浮点数在内存中的存储格式
- 浮点数在内存中的存储格式
- 浮点数在内存中的存储格式
- 浮点数在内存中的存储格式 .
- 浮点数在内存中的存储格式
- 浮点数在内存中的存储格式
- 浮点数在内存中的存储格式
- 浮点数在内存中的存储格式
- 浮点数在内存中的存储格式
- 浮点数在内存中的存储格式(转载)
- C语言中浮点数在内存中的存储格式
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储形式
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储
- 关于字符串读取实现操作符
- 数据结构——栈的应用
- 安卓初学:Android实现简单的跑马灯效果总结。
- LoginActivity
- C语言 学习方法
- 浮点数在内存中的存储格式
- GUI编程之BorderLayout
- 日期相关
- 00-ACM
- 操作系统常见面试题
- 约瑟夫环的链表C++实现
- TCP-IP协议详解(5) 我尽力(IP协议详解)
- Java的构造方法
- php-5.5.19 添加php_zip.dll拓展