快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

整型数据在内存中存储方式的讲解-创新互联

(以下讨论,针对32位的计算机系统。。)

成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的玉田网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

问:int型数据占几个字节?答:4字节。地球上这个群体的人都知道。

再问:这4个字节,即32个二进制位,又是何存储?这就进入计算机的“底层”了。这个事情,学习程序设计的童鞋,可以懂。

存储的方式,和我们拍脑袋想得不太一样,概括一下,就是低位在前,高位在后。

本文直观一些,看懂以下程序中数据的存储,也便知道这个安排。

整型数据在内存中存储方式的讲解

(源程序,及在watch窗口中用多种方式看x.c的方法,见文后附件。)

在程序中,由于联合体存储的特点,变量x占4个字节。我们可以从3个角度观察这4个字节:(1) 整体看,是一个int型数据;(2) 分成2部分看,是两个短整型数据;(3) 分成4部分看,是4个单字节的数据。

但无论怎么看,就是这4个字节。无论用哪种形式操作数据,使用的也就是这4个字节。联合体为我们提供了从不同的角度使用这4个字节的方式。

x.c[0]到x.c[3]的值分别为65\66\67\68,这好理解。

x.si[0]占的2字节,与x.c[0]和x.c[1]相同。验证一下:16961=66×256+65(66是'B'的ACSII值,65是'A'的ASCII值,是字符的存储形式)。注意,这里体现存储数据时低位在前,高位在后,低位是65,高位是66。正如十进制数98中,高位是9,低位是8,所以98=9×10+8一样。因为是高位,所以乘以位权10,表示9这个符号代表的其实是90。66×256,是因为存储66(‘B')的那一个字节的位置,比存储65(‘A')的那一个字节的位置高8位,所以乘以2的8次方,即256。

概括讲,存储2字节的16961时,其低8位,是65,在前(x.c[0]),而其高8位,是66,在后(x.c[1])。低位在前,高位在后。

请自行验证:17475=68×256+67,体现低位在前,高位在后。(x.si[0]占的2字节,与x.c[2]和x.c[3]相同)

再请验证:1145258561=17475×256×256+16961,也体现低位在前,高位在后。(x.i占的4字节,与x.si[0]和x.si[1]相同)

再请验证:1145258561=68×256×256×256+67×256×256+66×256+65。同样的道理。

换种写法,是1145258561=(((68×256+67)×256+66)×256+65。

再看截图,品味低位在前,高位在后。

这样安排的道理,在以后的关于“计算机的原理”的有关专业课中会接触到。

附1:本文源程序

#include 
using namespace std;
union un
{
  int i;
  short int si[2];
  char c[4];
};
int main()
{
  union un x;
  x.c[0]='A';
  x.c[1]='B';
  x.c[2]='C';
  x.c[3]='D';
  cout<< x.c[0]<<","<

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页标题:整型数据在内存中存储方式的讲解-创新互联
分享路径:http://6mz.cn/article/cshspc.html

其他资讯