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


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

    1. 变量的存储

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

    clip_image002

    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("
    ");
    }

    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. 取值范围

    clip_image001

  • 相关阅读:
    内网穿透之frp X
    python图形界面开发工具之PySimpleGUI X
    API 接口开发调试工具之ApiPost X
    分布式对象存储只FDFS X
    开发者工具 X
    Tornado框架之应用安全(四) X
    MySQL数据库设计规范(新) X
    Tornado框架之项目部署(六) X
    PHP之soap X
    python命令行工具之Click X
  • 原文地址:https://www.cnblogs.com/dssf/p/4584584.html
Copyright © 2020-2023  润新知