首页 > 系统相关 >初识内存中的数据——由浅入深理解程序的底层实现原理(一)

初识内存中的数据——由浅入深理解程序的底层实现原理(一)

时间:2022-10-10 15:01:40浏览次数:78  
标签:由浅入深 存储 字节 初识 内存 内存地址 数据 底层

引言:要想成为一名合格的开发者,掌握计算机系统工作原理是必须的,而在学这些之前应具有一门编程语言(汇编最好)的基础和一些计算机底层基础。本篇,我将从零开始一步步地探究高级语言底层逻辑和实现原理,希望对喜欢钻研的小伙伴们有所帮助。

一些数据类型的存储简单实现

注意,C语法在底层的具体实现并不是这样,很多较为复杂的机制细节以后逐步介绍。

字符型

所有字符型数据的存储大小为1个字节,例如,用C语法定义一个字符变量

char c1='A';

在内存中定义一个字符变量可用以下汇编语法实现

c2 BYTE 'a'

整数型

通常这一类型数据的存储大小与系统CPU操作位数有关,64位系统中,一般short型占2字节;int型占4字节;long型占8字节,在该环境下

short val1;
int   val2=1024;
long  val3=999999;

而在底层,可以这样建立这些变量

val1 WORD  ?
val2 DWORD 1024
val3 QWORD 999999

指针型

什么,这里就到指针了?先不要慌,指针在底层中没那么复杂,这里只要知道它是数据的内存地址就行了。在同一个系统中,数据的内存地址存储大小是固定的,32位系统中为4字节,64位系统实际为6字节但编译器一般默认8字节。定义指针

int *p; //C语言定义一个整型指针

pr1 DWORD ? ;指定一个可存放32位地址的变量(内存地址空间)

pr2 QWORD ? ;指定一个可存放64位地址的变量(内存地址空间)

梳理总结

  • 事实上,各数据类型的实现都依赖于系统内部数据类型(BYTE、WORD等),它们可存放存储大小一样的各种数据,也就是说对于内存中的数据,CPU只按内部数据类型的存储大小去访问。
  • 我们所认识的各种各样的数据,源于人们对基本数据进行各种不同的操作处理。
  • 内存中每个内存单元都对应一个唯一的内存地址,一个内存地址可指定任意一个数据,当这个数据存储空间大于内存单元时则会占用其他单元。

本文由mdnice多平台发布

标签:由浅入深,存储,字节,初识,内存,内存地址,数据,底层
From: https://www.cnblogs.com/bokong/p/16775738.html

相关文章

  • 初识Linux(一)------什么是Linux?
    前言最近遇到的项目需要在Linux上进行开发测试,作为萌新宝宝的我是一点不懂,还以为和Windows操作差不多,结果在Linux上屡屡四处碰壁,举步维艰。无奈只能祭出我本科大一就......
  • [MicroPython ESP32] 内存分析
    [MicroPythonESP32]内存分析[(1)芯片:ESP32-WROOM-DA]手册:https://www.espressif.com.cn/zh-hans/support/documents/technical-documents?keys=&field_type_tid%5B%5D......
  • 基础干货:高效卷积,降内存提速度保精度(附论文下载)
    公众号ID|ComputerVisionGzq学习群|扫码在主页获取加入方式论文地址:​​https://arxiv.org/pdf/1901.01928v1.pdf​​计算机视觉研究院专栏作者:Edison_G深度学习模型在目标检......
  • MUCNetV2:内存瓶颈和计算负载问题一举突破?分类&检测都有较高性能(附源代码下载)
    公众号ID|ComputerVisionGzq​论文地址:https://arxiv.org/pdf/2110.15352.pdf源代码:https://mcunet.mit.edu计算机视觉研究院专栏作者:Edison_GMCUNetV2取得了MCU端新的ImageN......
  • 《MiniPRO H750开发指南》第四十四章 内存管理实验
    第四十四章内存管理实验​如果我们所用的内存都是直接定义一个数组来使用,灵活性会比较差,很多时候不能满足实际使用需求。为了解决这些问题,我们来学习内存管理,实现对内存的动......
  • java中内存泄漏和内存溢出指什么呢?
    转自:http://www.java265.com/JavaMianJing/202110/16349105381543.htmljava中内存泄漏和内存溢出指什么呢?下文笔者讲述java中常见的内存泄漏和内存溢出的相关简介说明,如......
  • c++面向对象概述、内存分析、引用、函数
    1.c++内存分区模型c++程序在运行的过程中,内存会被划分为以下四个分区代码区:程序的所有程序的二进制代码,包括注释会被放到此区全局区:存放静态变量、全局变量、常量(字符串常量......
  • 函数的初识
    计算机硬盘修改数据的原理文件内容修改函数前戏函数的语法结构函数的定义与调用函数的分类函数的返回值函数的参数计算机硬盘修改数据的原理硬盘写数据可以理解......
  • rdr安装使用(redis内存分析工具)
    rdr安装使用1、下载wgethttps://github.com/xueqiu/rdr/releases/download/v0.0.1/rdr-linux 2、加权限chmoda+x./rdr*./rdr-linuxshow-p8080dump.rdb  3......
  • rdbtools 工具使用(redis内存分析)
    1、安装不要使用python3,用centos自带的python2版本,我使用Python3安装有问题。yuminstallpython-develpipinstallpython-lzf gitclonehttps://github.com/sripa......