博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C(1)—— 数据在内存中的存放形式
阅读量:5272 次
发布时间:2019-06-14

本文共 1446 字,大约阅读时间需要 4 分钟。

一、数据在内存中的存放方式

数据在存放到内存里的时候,有两种存放方式,即:Big Endian 和 Little Endian

  • Big Endian(大端模式/网络字节序):内存中的高位存放数据的低位,内存中的低位存放数据的高位
  • Little Endian(小端模式/主机字节序/反字节序):内存中的高位存放数据的高位,内存中的低位存放数据的低位

注:PowerPC系列采用big endian方式存储数据,而x86系列则采用little endian方式存储数据

为了更好理解,比如数字0x12345678在两种不同字节序CPU中的存储顺序如下所示:

  • Big Endian(符合正常的思维习惯)  

    低地址 -----------------------------------------------------------------------------> 高地址

        |    12   |    34   |    56   |   78   |

  • Little Endian

    低地址 -----------------------------------------------------------------------------> 高地址

        |    78   |    56   |   34   |   12   |

由此,我们可以通过共用体来判断一台机器使用的存储方式,因为共用体的存放顺序是所有成员从低地址开始存放。

 

二、浮点数在内存中的存储方式

对于浮点数在内存是如何存储的,目前所有的C/C++编译器都是采用IEEE所制定的标准浮点格式,即二进制科学表示法。

在二进制科学表示法中,S=M*2^N 主要由三部分构成:符号位+阶码(N)+尾数(M)。对于float型数据,其二进制有32位,其中符号位1位,阶码8位,尾数23位;对于double型数据,其二进制为64位,符号位1位,阶码11位,尾数52位。

  • 符号位:0表示正,1表示负
  • 阶码:这里阶码采用移码表示,对于float型数据其规定偏置量为127,阶码有正有负,对于8位二进制,则其表示范围为-128-127,double型规定为1023,其表示范围为-1024-1023。比如对于float型数据,若阶码的真实值为2,则加上127后为129,其阶码表示形式为10000010
  • 尾数:有效数字位,即部分二进制位(小数点后面的二进制位),因为规定M的整数部分恒为1,所以这个1就不进行存储了。

 

下面举例说明:

float型数据125.5转换为标准浮点格式是什么?

答:125二进制表示形式为1111101,小数部分表示为二进制为 1,则125.5二进制表示为1111101.1,由于规定尾数的整数部分恒为1,则表示为1.1111011*2^6,阶码为6,加上127为133,则表示为10000101,而对于尾数将整数部分1去掉,为1111011,在其后面补0使其位数达到23位,则为11110110000000000000000

综上:则其二进制表示形式为:0 10000101 11110110000000000000000

则在内存中存放方式为(x86情况):

00000000 低地址

00000000
11111011
01000010 高地址

转载于:https://www.cnblogs.com/zhangjing327/p/3496912.html

你可能感兴趣的文章
设计模式8——建造者模式
查看>>
javascript中获取非行间样式的方法
查看>>
day 67 orm初识 {code_first/db_first}
查看>>
IIS7.5 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面...
查看>>
Redis 入门之Redis简介
查看>>
leetcode33 Search in Rotated Sorted Array
查看>>
特征缩放
查看>>
验证(Javascript和正则表达式)
查看>>
js中字符串和json数组的相互转换
查看>>
PHP5之前的构造函数与PHP5之后的构造函数的区别
查看>>
mysql基础
查看>>
linux命令
查看>>
CSS hack
查看>>
js几个小技巧和坑
查看>>
OSPF相关知识与实例配置【第一部分】
查看>>
JVM监控远程服务器
查看>>
python glob删除目录下的文件
查看>>
网络配置文件详解
查看>>
Tomcat部署Web应用的两种方式
查看>>
阅读《effective java-第17条》遇到的问题解决与分享
查看>>