原文链接:http://blog.csdn.net/qingkong8832/article/details/6687793

一、int型变量在内存中存储详细情况

//By Richard
#include <stdio.h>
#include <math.h>int main()
{int i1=0;int i2=1;int i3=-1;int i4=127;int i5=-127;int i6=128;int i7=-128;int i8=255;int i9=-255;int i10=256;int i11=-256;int i12=(int)pow(2.0,16)-1;//65535int i13=-(int)pow(2.0,16)+1;//-65535int i14=(int)pow(2.0,16);//65536int i15=-(int)pow(2.0,16);//-65536int i16=(int)pow(2.0,24)-1;//16777215int i17=-(int)pow(2.0,24)+1;//-16777215int i18=(int)pow(2.0,24);//16777216int i19=-(int)pow(2.0,24);//-16777216int i20=(int)pow(2.0,31)-1;//2147483647,最大值int i21=-(int)pow(2.0,31)+1;//-2147483647int i22=(int)pow(2.0,31);//超出范围,溢出,从最小值-2147483648循环int i23=-(int)pow(2.0,31);//-2147483648,最小值/****************************************************************    在return 0上打上断点,F5开始调试,Alt+6查看内存*    要想查看哪个变量在内存中的存储情况,在地址栏输入&+变量名,比如说:&i1*    int型占4个字节,注意:内存中的存储顺序和实际的字节表示刚好相反*    比如说:10,在内存中表示为0a 00 00 00,而实际中表示为00 00 00 0a*    负数的二进制数:对应的正数的二进制数每一位取反,再加1*    int型最高位表示符号:1,表示负数,0表示正数(内存中的最后一个字节的第一位表示)*    具体来分析:*           0 :00 00 00 00*           1 :01 00 00 00*          -1 :ff ff ff ff(00 00 00 01->ff ff ff fe->ff ff ff ff)*         127 :7f 00 00 00*        -127 :81 ff ff ff(00 00 00 7f->ff ff ff 80->ff ff ff 81)*         128 :80 00 00 00*        -128 :80 ff ff ff(00 00 00 80->ff ff ff 7f->ff ff ff 80)*         255 :ff 00 00 00*       -255 :01 ff ff ff(00 00 00 ff->ff ff ff 00->ff ff ff 01)*         256 :00 01 00 00*       -256 :00 ff ff ff(00 00 01 00->ff ff fe ff->ff ff ff 00)*      65535 :ff ff 00 00*     -65535 :01 00 ff ff(00 00 ff ff->ff ff 00 00->ff ff 00 01)*      65536 :00 00 01 00*     -65536 :00 00 ff ff(00 01 00 00->ff fe ff ff->ff ff 00 00)*   16777215 :ff ff ff 00*  -16777215 :01 00 00 ff(00 ff ff ff->ff 00 00 00->ff 00 00 01)*   16777216 :00 00 00 01*  -16777216 :00 00 00 ff(01 00 00 00->fe ff ff ff->ff 00 00 00)* 2147483647 :ff ff ff 7f*-2147483647 :01 00 00 80(7f ff ff ff->80 00 00 00->80 00 00 01)* 2147483648 :01 00 00 00 00(超出范围)*-2147483648 :00 00 00 80(-2147483647减去1得到)    ********同理可知道short型、long型情况*****************************************************************************/return 0;
}

二、unsigned int型存储情况

//By Richard
#include <stdio.h>
#include <math.h>int main()
{unsigned int i1=0;unsigned int i2=1;unsigned int i3=255;unsigned int i4=256;unsigned int i5=65535;unsigned int i6=65536;unsigned int i7=(unsigned int)pow(2.0,24)-1;unsigned int i8=(unsigned int)pow(2.0,24);//16777216unsigned int i9=(unsigned int)pow(2.0,31)-1;unsigned int i10=(unsigned int)pow(2.0,31);//2147483648unsigned int i11=(unsigned int)pow(2.0,32)-1;//4294967295unsigned int i12=(unsigned int)pow(2.0,32);//超出范围,这里为0/************************************************************************    unsigned  int占4个字节,只能表示正数*    最大为(int)pow(2.0,32)-1=4294967295*    当超出最大值后,从0开始往后循环*      0       :00 00 00 00*      1       :01 00 00 00*      255     :ff 00 00 00*      256     :00 01 00 00*      65535   :ff ff 00 00*      65536   :00 00 01 00*    16777215  :ff ff ff 00*    16777216  :00 00 00 01*    2147483647:ff ff ff 7f(01111111 11111111 11111111 11111111)*    2147483648:00 00 00 80(1000000 00000000 00000000 00000000)*    4294967295:ff ff ff ff************************************************************************/return 0;
}

三、char和unsigned char型讨论

//By Richard
#include <stdio.h>int main()
{char c0=0;//00char c1=1;//01char c2=-1;//ff(01->fe->ff)char c3='A';//41    char c4=65;//41char c5=127;//7fchar c6=-127;//81(7f->80->81)char c7=128;//超出范围char c8=-128;//80
unsigned char uc0=0;unsigned char uc1='A';//41unsigned char uc2=65;//41unsigned char uc3=127;//7funsigned char uc4=128;//80unsigned char uc5=255;//ffunsigned char uc6=256;//超出范围,从0开始循环/********************************************* char范围为-128到127,表示的ASCII码有限* unsigned char范围为0到255,能表示所有的ASCII码* 在牵扯到读取文件或写文件,都定义成unsigned char型*********************************************/return 0;
}

四、float型讨论

//By Richard
#include <stdio.h>int main()
{//float占4个字节float d0=0;float d1=1;float d2=-1;float d3=1.5;float d4=-1.5;float d5=11.9;float d6=0.2356;/**********************************************************************   0:00 00 00 00*   1:00 00 80 3f*  -1:00 00 80 bf* 1.5:00 00 c0 3f*-1.5:00 00 c0 bf*详细过程:*============================================================*4字节:    31          30      29-23(7位) 22-0(23位)* 表示:实数符号位  指数符号位   指数位        有效数位*=============================================================* 将一个float型转化为内存存储格式的步骤为:* 1,先将这个实数的绝对值化为二进制格式* 2,将这个二进制格式实数的小数点左移或右移n位,直至小数点移动到第一个*    有效数字的右边* 3,从小数点右边第一位开始数出23位,放入第22位到第0位* 4,如果实数是正的,则在第31位放入“0”,否则放入“1”* 5,如果n是左移得到的,说明指数是正的,第30位放入“1”。如果是右移得到的或*    n=0,则第30位为“0”* 6,如果n是左移得到的,则将n减去1后化为二进制,并在左边加0补足7位,放入*    第29到第23位。如果n是右移得到的或n=0,则将n化为二进制后在左边加0补足7位*    再各位取反,之后放入第29到第23位*=============================================================* 举例说明: 11.9的内存存储格式 * (1) 将11.9化为二进制后大约是" 1011. 1110011001100110011001100..."。 * (2) 将小数点左移三位到第一个有效位右侧: "1. 011 11100110011001100110 "。 *     保证有效位数24位,右侧多余的截取(误差在这里产生了  )。 * (3) 这已经有了二十四位有效数字,将最左边一位“1”去掉,得到*     “ 011 11100110011001100110 ”共23bit。将它放入float存储结构的第22到第0位。 * (4) 因为11.9是正数,因此在第31位实数符号位放入“0”。 * (5) 由于我们把小数点左移,因此在第30位指数符号位放入“1”。 * (6) 因为我们是把小数点左移3位,因此将3减去1得2,化为二进制,并补足7位得到0000010,*     放入第29到第23位。 * 最后表示11.9为:|0  1  [00|0001|0] [011 |1110|0110|0110|0110|0110]* 对应的16进制为:   4       1     3      e    6    6   6    6* 内存存储为:66 66 3e 41*================================================================* 再举一个例子:0.2356的内存存储格式*(1)将0.2356化为二进制后大约是0.00111100010100000100100000。 *(2)将小数点右移三位得到1.11100010100000100100000。 *(3)从小数点右边数出二十三位有效数字,即11100010100000100100000放*     入第22到第0位。 *(4)由于0.2356是正的,所以在第31位放入“0”。 *(5)由于我们把小数点右移了,所以在第30位放入“0”。 *(6)因为小数点被右移了3位,所以将3化为二进制,在左边补“0”补足七*     位,得到0000011,各位取反,得到1111100,放入第29到第23位。 *  最后表示0.2356:0 0 [11|1110|0] [111|0001|0100|0001|0010|0000]*  对应的16进制为:   3      e     7      1    4    1    2    0*  内存存储为:20 41 71 3e************************************************************************/return 0;
}

转载于:https://www.cnblogs.com/panweishadow/p/3529254.html

不同类型的变量在内存中存储的详细情况相关推荐

  1. Java变量在内存_Java变量在内存中的存储

    [TOC] Java变量在内存中的存储 以下探究成员变量和局部变量在内存中的存储情况. package com.my.pac04; /** * @author Summerday * @date 20 ...

  2. java 数据保存内存_java中的各种数据类型在内存中存储的方式 一

    1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...

  3. c语言中聚合类型的变量,c语言中的数据类型

    更新中....... 在c语言中,仅有4种基本数据类型--整型,浮点型,指针和聚合类型(如数组和结构等).所有其他的类型都是从这4种基本类型派生而来. 1 . 整型 整型家族包括字符,短整型,整型和长 ...

  4. php实现 求int型数据在内存中存储时1的个数(函数都可自己实现)

    php实现 求int型数据在内存中存储时1的个数(函数都可自己实现) 一.总结 一句话总结:函数我们自己都可以实现,尤其是很多基础函数,没有工具的时候自己写. 1.php进制转换函数? base_co ...

  5. 牛客网——华为机试(题15:求int型正整数在内存中存储时1的个数)(Java)

    题目描述: 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数. 输入描述: 输入一个整数(int类型) 输出描述: 这个数转换成2进制后,输出1的个数 示例1: 输入: 5 输出: ...

  6. 华为机试——求int型正整数在内存中存储时1的个数

    题目描述 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数. 输入描述: **输入一个整数(int类型) 输出描述:** 这个数转换成2进制后,输出1的个数 示例1 输入5 输出2 ...

  7. 如何在内存中存储有序数据?

    目前有很多种不同的数据结构可以在内存中存储有序的数据.在分布式数据库的存储引擎中,有一种结构因其简单而被广泛地使用,那就是跳表(SkipList). 跳表的优势在于其实现难度比简单的链表高不了多少,但 ...

  8. C语言面试题--已知整形变量在内存中占4个字节的空间,现有一无符号整形变量a = 0x20190125,请编写函数求出变量a所占内存每个字节的值是多少?

    已知整形变量在内存中占4个字节的空间,现有一无符号整形变量a = 0x20190125,请编写函数求出变量a所占内存每个字节的值是多少? 用共用体方法:共用体内的空间是公用的,每一个成员都可以访问共用 ...

  9. 华为机试-求int型数据在内存中存储时1的个数

    问题描述 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数. 输入描述: 输入一个整数(int类型) 输出描述: 这个数转换成2进制后,输出1的个数 示例 示例1 输入 5 输出 ...

最新文章

  1. 数据连接池的工作机制是什么?
  2. 【动态规划】最小代价问题
  3. Java 正则表达式匹配模式[贪婪型、勉强型、占有型]
  4. oracle 11203 ora32701,11G RAC ORA-32701 参考学习
  5. docker的安装与安装mysql(mac,centos为例)
  6. C++ 学习笔记----基础篇
  7. flash我中学时的梦想
  8. 一些会遗忘的代码属性
  9. Python开发环境的搭建(win7)
  10. centos7完全卸载mysql_Centos7 完全卸载mysql
  11. Oracle 创建表详解(create table)
  12. GIS招聘 | 中煤航测遥感集团(大量测绘、地信、遥感岗位)
  13. 魔百盒CDN00001_移动魔百盒设置最佳DNS方法
  14. 淘宝 直通车 _h python源码
  15. 水源井远程监测控制系统 泵房无人值守方案
  16. Oracle中的sql语句
  17. linux 基准测试,技术|如何基准测试 Linux PC 的性能?
  18. 魔兽世界服务器维护后 猎人宝宝,9.0猎人全宠物刷新地点 猎人宝宝刷新点大全...
  19. win10系统英雄联盟老是重新连接服务器,更新win10系统后lol进不去游戏怎么回事 win10lol重新连接进不去怎么办...
  20. 浮点数的表示及范围 IEEE754

热门文章

  1. C语言Main函数到底有几种,你真的懂吗?
  2. Python3实现红黑树[下篇]
  3. set trans 必须是事务处理的第一个语句_MySQL中特别实用的几种SQL语句送给大家
  4. linux 在线帮助,linux获取在线帮助
  5. 武警多业务光端机,五防光端机产品介绍
  6. [渝粤教育] 四川大学 药用植物学 参考 资料
  7. 【渝粤教育】国家开放大学2018年春季 0471-21T畜牧学 参考试题
  8. 【渝粤教育】国家开放大学2018年春季 0507-21T非线性编辑 参考试题
  9. 【渝粤教育】国家开放大学2018年秋季 2247T社会工作政策法规 参考试题
  10. 【渝粤题库】陕西师范大学163112 旅游管理英语听说 作业 (高起专)