码迷,mamicode.com
首页 > 编程语言 > 详细

【学习笔记】【C语言】变量的内存分析

时间:2015-06-18 00:34:14      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

计算机中的内存是以字节为单位的存储空间。内存的每一个字节都有一个唯一的编号,这个编号就称为地址。就好像酒店是以房间为单位的,每个房间都有一个唯一的房号,我们根据房号就能找到对应的房间。

1. 变量的存储

1> 所占用字节数跟类型有关,也跟编译器环境有关

技术分享

 

2> 变量实例

int b = 10;

int a = 134;

*内存由大到小寻址

*只存储二进制形式

*每个变量都有地址:第一个字节的地址就是变量的地址

3> 查看内存地址的两种方式:%x和%p

4>查看整数的二进制形式

void putBinary(int n)
{
    int bits = sizeof(n) * 8;
    while (bits-->0) {
        printf("%d", n>>bits&1);
        if (bits%4==0) printf(" ");
    }
    printf("\n");
}

2. 负数在内存中的存储

1 int main()
2  {
3     int b = -10;  
4     return 0;
5  } 

在第3行定义了一个整型变量,它的值是-10。-10在内存中怎样存储的呢?其实任何数值在内存中都是以补码的形式存储的。

  • 正数的补码与原码相同。比如9的原码和补码都是1001
  • 负数的补码等于它正数的原码取反后再+1。(取反的意思就是0变1、1变0)

那么-10的补码计算过程如下:

1> 先算出10的二进制形式:0000 0000 0000 0000 0000 0000 0000 1010

2> 对10的二进制进行取反:1111 1111 1111 1111 1111 1111 1111 0101

3> 对取反后的结果+1:1111 1111 1111 1111 1111 1111 1111 0110

因此,整数-10在内存中的二进制形式是:1111 1111 1111 1111 1111 1111 1111 0110

技术分享

3. 取值范围

技术分享

【学习笔记】【C语言】变量的内存分析

标签:

原文地址:http://www.cnblogs.com/dssf/p/4584584.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!