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

原文链接: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php 修改文件访问时间,php获取文件的创建、修改时间及访问时间

filemtime() 函数返回文件内容上次的修改时间若成功&#xff0c;则时间以 Unix 时间戳的方式返回。若失败&#xff0c;则返回 false。语法 : filemtime(filename)参数描述filename必需。规定要检查的文件。说明本函数返回文件中的数据块上次被写入的时间&#xff0c;也就是说&a…

数据包分析

通过对数据包的分析&#xff0c;我们可以判断通信双方的操作系统、网络信息流量、经过的路由、数据包的大小&#xff0c;以及数据包的内容等等。对于喜欢网络安全的人来说&#xff0c;掌握这方面的知识是相当重要的。现在的网络通信中&#xff0c;大部分数据都没有加密&#xf…

php-5.2.6安装,php5.2.6安装openssl.o扩展,make时报错?

问题&#xff1a;调试支付宝支付时报错&#xff1a;Fatal error: Call to undefined function openssl_get_privatekey()在网上查了 说是没有安装openssl.so扩展。通过 phpize安装扩展&#xff0c;但是make时报错&#xff1a;/bin/sh /opt/php-5.2.6/ext/openssl/libtool --mod…

highcharts第一篇---简介和使用

Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表&#xff0c;并且免费提供给个人学习、个人网站和非商业用途使用。HighCharts支持的图表类型有曲线图、区域图、柱状图、饼状图、散状点图和综合图表 具体参考&a…

php中数字可以加字符吗,在php中,怎么样把数字转化为字符串

PHP的数据类型转换属于强制转换&#xff0c;允许转换的PHP数据类型有&#xff1a;(int)、(integer)&#xff1a; 转换成整形(float)、(double)、(real)&#xff1a; 转换成浮点型(string)&#xff1a; 转换成字符串(bool)、(boolean)&#xff1a; 转换成布尔类型(array)&#x…

CUBA平台–新的Java企业应用程序框架

所以..你好&#xff0c;世界&#xff01; 我们的英语网站终于可以正常使用了&#xff0c;现在每个人都可以下载该平台&#xff0c;并可以以前所未有的速度更快地创建业务应用程序。 在我们决定与国际Java社区共享足够好之前&#xff0c;我们花了六年的永久发展和偶尔的革命&…

Redis,MemCached,MongoDB 概述

调研项目主要有Redis、 MemCached、 MongoDB&#xff0c;以及Amazon的DynamoDB Redis 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。目前由VMware主持开发工作。 1&#xff09; 数据模型 作为K…

php 正则 回溯,php 正则表达式效率 贪婪、非贪婪与回溯分析

先扫盲一下什么是正则表达式的贪婪&#xff0c;什么是非贪婪&#xff1f;或者说什么是匹配优先量词&#xff0c;什么是忽略优先量词&#xff1f;好吧&#xff0c;我也不知道概念是什么&#xff0c;来举个例子吧。某同学想过滤之间的内容&#xff0c;那是这么写正则以及程序的。…

Abiword页面布局

Abiword页面布局 AP_Win32FrameImpl::_DocumentWndProc 文档窗口过程函数在WM_SIZE消息中设置FV_View对象的整体尺寸&#xff0c;跟窗体的&#xff1a;设备单位 转换成&#xff1a;布局单位。m_iWindowWidth 19695&#xff0c;m_iWindowHeight 8520 设备单位和布局单位的比例是…

php图片编辑失真,PHP处理图片固定大小 不失真 不变形

由于工中使用到此代码 借鉴了各位前辈们代码的基础上修改而来 如果您的项目中有需要此代码 要以尽情的复制和修改 &#xff1b;如果您有更好的代码烦请告知本人 。我将感激不尽下面由上代码//图像处理类class Image {private $file;//图片地址private $width;//图片长度privat…

abiword Namespace List

abiword Namespace List Here is a list of all namespaces with brief descriptions: abicollab 这个命名空间以及下面的abicollab::service均是在线协作相关。abicollab::service 这个命名空间是在线协作相关。AiksaurusImpl 词库相关&#xff0c;命名空间名字翻译&#xff1…

ios php 表单提交图片上传,axios发送post请求提交图片表单步骤详解

这次给大家带来axios发送post请求提交图片表单步骤详解&#xff0c;axios发送post请求提交图片表单的注意事项有哪些&#xff0c;下面就是实战案例&#xff0c;一起来看一下。DOME接口const userUploadAtt (File,config) > axios.post("接口",File,config)处理数…

solr4.6本地数据提交异常

初次学习solr的时候不能把dist文件夹所有的包都导入工程中&#xff0c;这样会有slf4j异常&#xff0c;这是因为slf4j版本冲突导致的。一个一个jar的导入的话&#xff0c;中间还是有许多异常出在哪个jar包中不清楚&#xff0c;所以我把我遇到的异常整理了一下。 异常一&#xff…

php 文件内容对比,php 比较两个文件是否相同

-### php比较两个文件是否相同小一点的文件直接实用内置函数就可以了function md5_files($filename,$filename1){$file1 md5_file($filename);$file md5_file($filename1);if($file $file1){return "文件相同";}else{return "文件不同";}}md5_file()…

今日心得:给自己写信

1.tomorrow is another day 2.有一种人一认识就觉得温馨 3.这个世界只在乎你是否达到了一定的高度&#xff0c;不在乎你是站在巨人的肩膀还是垃圾上上去的 4.花儿总要在风雨的洗礼下盛开 5.有一种“无能为力”叫宿命 6.幸福是什么&#xff1f;有很多幸福的瞬间&#xff0c;幸福…

Hibernate READ_WRITE CacheConcurrencyStrategy如何工作

介绍 在我以前的文章中&#xff0c;我介绍了NONSTRICT_READ_WRITE二级缓存并发机制。 在本文中&#xff0c;我将使用READ_WRITE策略继续本主题。 直写式缓存 NONSTRICT_READ_WRITE是一种通读缓存策略&#xff0c;可更新最终无效的缓存条目。 尽管这种策略可能很简单&#xff0…

matlab中的控制语句,MATLAB控制语句

目的&#xff1a;研究控制结构(用于, 是否, 切换, 中断, 继续, 输入/输出功能, 读取和存储数据)。If&#xff1a;If评估逻辑表达式并根据表达式的值执行一组语句。If语句的语法if expression 1statement1elseif expression 2statement 2elsestatement 3end例子>> a7a 7&g…

java.logging的重定向?

java.logging的重定向&#xff1f; 接着昨天的工作。 上面说要重定向java.util.logging.Logger的输出&#xff0c; 发现也不是不可能。 package jmx;import java.util.logging.FileHandler; import java.util.logging.Filter; import java.util.logging.Handler; import java.u…

Spring Enable批注–编写自定义的Enable批注

Spring提供了一系列名称以Enable *开头的注释&#xff0c;这些注释本质上使某些Spring管理的功能可以被激活。 这样的注释的一个很好的例子是EnableWebMvc &#xff0c;它引入了在基于Spring的应用程序中支持MVC流所需的所有bean。 另一个很好的例子是EnableAsync注释&#xff…

java hashmap替换key,HashMap 用可变对象作为 key 踩坑

点击上方☝Java编程技术乐园&#xff0c;轻松关注&#xff01;及时获取有趣有料的技术文章做一个积极的人编码、改bug、提升自己我有一个乐园&#xff0c;面向编程&#xff0c;春暖花开&#xff01;作者&#xff1a;Icharlehttps://icharle.com/hashmapkebianobj.html前言在 Ja…