精华内容
下载资源
问答
  • 一个内存是由若干个黑色的内存颗粒构成的。每一个内存颗粒叫做一个chip。 图1.内存外形图 上面这个内存条有8个chip。每一个chip内部,由8个bank组成的。其构造如下图: 图2.内存颗粒物理结构 在每个bank...

    我们来了解一下内存的物理构造,一般内存的外形图片如图1。一个内存是由若干个黑色的内存颗粒构成的。每一个内存颗粒叫做一个chip。

    图1.内存外形图

    上面这个内存条有8个chip。每一个chip内部,是由8个bank组成的。其构造如下图:

    图2.内存颗粒物理结构

     

    在每个bank内部,就是电容的行列矩阵结构了。(注意,二维矩阵中的一个元素一般存储着8个bit,也就是说包含了8个小电容)。

    图3.bank物理结构

     

     

    看完上面的图我们知道了内存是使用海量的小电容按照8个一组的方式排列出来的。

    在逻辑电路中,低电平表示0,高电平表示1。一般规定低电平为0~0.25V,高电平为3.5~5V。不管是电容形式或者磁盘形式(硬盘)或者其他形式的储存器,他们的最基本存储形式实际上都只能储存真或者假两种形式。

    所以内存中一个最基本储存电容(比特BIT)可以存放C语言中的一个布尔型数据(真|假),8个比特排列起来就组成了一个字节byte,一个字节可以存储一个2的8次方的数也就是256

    2进制表示为:00000000 - 11111111(也就是8种不同电平状态的电容组合起来)

    2进制转为10进制就是:256, 转为16进制就是FF

    内存作为1个存储数据的存在, 有1个很重要的特性, 就是内存里的数据能被cpu直接访问。

    虽然CPU能直接访问内存,但是也不能一个bit一个bit的查找,因为这样查找的话数据量太大了,于是CPU就按照8个一组的方式去查找内存(也就是一个字节byte),实际上内存也是按照8个bit一组的方式摆放的。

    操作系统会给每一个字节(byte)的数据设置一个内存地址,在32位操作系统上他是一个32位的2进制数,最大能表达4G的数据(2的32次方个字节)的位置,在64位操作系统上他是一个64位的2进制数,能表示17亿多个G的数据位置。

    C语言中的指针也就是内存地址,所以在32为操作系统c的指针占4字节,64位操作系统上占8字节。

    然后CPU通过直接寻址技术去查找相关内存。

    注意:内存地址只是一种寻址逻辑,并没有实体。但是C语言的指针是把操作系统返回的寻址逻辑地址给实际保存了,所以指针会占内存,不要混淆了。

    了解了这些我们再来看C语言的数据类型就很容易理解了。

    ASCII码就是把内存中一个字节的数规定了一个映射表,比如110000(48)代表0,1100001(97)代表A等。其实就是一个约定俗成的映射表。

    unicode码也是类似的一种映射表,因为电脑只能表示和读懂2进制的数据,人类就规定了一种映射表来映射到其他的数据。

     

    方便自己记忆而做的笔记,如果有错误恳请指出,参看文章如下:

    https://www.jianshu.com/p/bc8252f18ecf

    https://www.jianshu.com/p/92226196fdcd

    展开全文
  • 1.原因object.java类所有类的基类,称为父类/超类,java中所有的类都会继承该类,而该类的toString方法打印的就是内存地址. 2.list中打印的确数组类型的字符串,原因list类继承自下图中的AbstractList类, 该...

    **1.原因是object.java类是所有类的基类,称为父类/超类,java中所有的类都会继承该类,而该类的toString方法打印的就是内存地址.当System.out.println(X)的时候,实际打印的就是X.toString()方法的内容,如果X元素没有重写toString()方法那么就是内存地址值,如果重写了就是数组类型的字符串,**至于System.out.println(X)方法为什么会打印的就是X.toString()的内容,在下面以list和array做详细介绍.
    2.list中打印的确是数组类型的字符串,原因是list类继承自下图中的AbstractList类,
    在这里插入图片描述
    该类又继承了AbstractCollection类,该类重写了toString方法.返回的是数组类型的字符串,如下图所示:
    在这里插入图片描述
    因此,list也继承了重写后的toString()方法.
    我们再看一下System.out.println()方法,进入到println()方法发现,他打印的就是元素的toString()的内容,如下图所示:
    在这里插入图片描述
    进入上图方法中,点击valueof()方法,进入到下图中:
    在这里插入图片描述
    我们发现,其实System,out.println()方法打印的就是传入的该元素的toString()的值,在结合list中已经重写了该方法,因此打印的是数组类型的字符串.
    3.数组为什么重写后还是内存地址,必须要用Ayyays.toString(数组)才能打印数组类型的字符串?
    原因与list中原因是一致的,因为数组的Arrays类重写了toString()方法,而本身创建的数组没有重写toString()的方法,因此打印出来的就是内存值.

    展开全文
  • java中==null 怎么成立? 在引用数据类型中==比较的是内存地址 null的内存地址是什么 [img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/3.gif][/img]
  • 在计算机中,内存连续的存储空间,并且对内存进行了编址,编址连续的,地址的基本单位字节。变量,在编译时(先编译理解这个很重要)根据它的类型给...所以该变量对应的内存地址中存入的内容即该变量的值。c语...

    在计算机中,内存是连续的存储空间,并且对内存进行了编址,编址是连续的,地址的基本单位是字节。

    变量,在编译时(先编译理解这个很重要)根据它的类型给它分配一定长度的内存单元。

    比如:

    int型变量占4个字节

    double型变量占8个字节

    引用一个变量时就是从该变量名对应的地址开始的若干单元取出数据

    变量赋值时是将数据按照该变量定义的类型存入对应的内存单元。所以该变量对应的内存地址中存入的内容即是该变量的值。

    c语言中规定,通过地址运算符&得到变量的地址。

    说明:

    1. 基本类型的变量,变量长度都是一定的,即变量长度是由类型决定的,而不是赋的值长度#include

    int main(void){

    int a = 1;

    int b = 10223372036854775807;

    printf("%d\n",sizeof(int));

    printf("%d\n",sizeof(a));

    printf("%d\n",sizeof(b));

    return 0;

    }

    2. 编辑器首先会对定义的变量安装类型在内存单元中数值一定长度的空间,无论是否赋值。

    .....

    展开全文
  • 如题、。请问谁知道有啊。toString() 好像打印不出来这种基本数据类型与包装类的、
  • 什么32位的系统内存中指针类型都占用4个字节的内存呢 在学习过程中知道,一个任何类型的指针变量所占的字节大小都为4个字节。这什么呢? 内存是由字节组成的,每个字节都有一个编号。指针变量主要存放相同...

    在学习过程中知道,一个任何类型的指针变量所占的字节大小都为4个字节。这是为什么呢?

    内存是由字节组成的,每个字节都有一个编号。指针变量主要是存放相同数据类型的变量的首地址。这里的这个地址其实就是内存的某个字节的编号。而这个编号的确定是与地址总线有关。如果地址总线是32位,则它的寻址范围是0~2^32(0~4G)。所以为一个字节编址就由32个0或者1组成。例如第一个字节的编址是32个0,最后一个的编址是32个1。一个字节有8位,32位则需要4个字节。

    简单的说32位的操作系统就是指:地址总线是32位的系统。那么,也就是说操作系统的位数决定了指针变量所占的字节数。
    ————————————————
    版权声明:本文为CSDN博主「鸡啄米的时光机」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_33221533/article/details/81143818

    展开全文
  • 什么String 的变量输出不是地址? 因为所有的类继承Object类,所以单独输出一个对象的时候,他会调用Object.toString,打印出来的...关于Java中String内存地址的问题。 在创建String类型的变量的时候建议使用直接赋值
  • 指针用来保存内存地址的变量。 2.用指针来保存地址  2.1 指针与类型变量 从上面我们可以看到指针P1指向的a为int类型,指针P2指向的b为double类型。当我们分别把指针P1,P2分别加一时, 根据输出的结果可以...
  • 1.引用数据类型在内存中的存储方式是什么? Scanner input = new Scanner(); 创建一个Scanner类型的变量,名称为input,值为Scanner对象 栈中存储的是堆中的内存地址 2.基本数据类型和引用数据类型的不同? (1).声明...
  • 内存地址

    千次阅读 2019-05-15 00:28:28
    什么是地址地址就是内存编号。 什么是内存,就是便于访问的存储空间。 内存什么是4g?因为32根地址总线的cpu支持2的32次方寻址。 即有4g个字节。每个字节8位。因此一个int32位需要4个字节来表示。一个char8位...
  • java引用类型是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。引用类型和原始类型...
  • C语言-内存映射是什么,根据自己粗浅的学习理解,总结为——创建一个文件映射内核对象然,然后在把文件映射内核对象映射到内存地址空间中,然后我们拿这个内存地址(也就是无类型类型指针)对内存空间(也就相当与...
  • 什么是动态内存分配

    2020-09-27 09:17:38
    **动态内存分配** 我们需要知道的:创建和处理在程序执行的...函数malloc以请求分配的字节数为实参,返回一个指向分配到的内存空间的首地址类型为void的指针(即指向void的指针)。还有就是:类型为void的指...
  • 以补码二进制存储,方便起见,化为16进制 要想弄懂,必须知道元素在计算机内存是咋存储的,也就是内存影像图类型强转就是对所能读取内存单元的改变,指类在内存作用地址单元的映射长度 short a = 1 ...
  • 在深入了解 python 的 copy() 方法之前先回顾以前以前学过的变量赋值,如: a = 123123 b = a print(b) 毫无疑问,在变量中我可以直接...id() 方法使用来查看 变量 在计算机中真实的 内存地址 的一个方法,如: a ...
  • 内存地址对齐

    2009-08-15 23:06:00
    内存地址对齐2008/05/21 12:46什么是对齐,以及为什么要对齐:现代计算机中内存空间都按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况在访问特定变量的时候经常在特定的...
  • C# 变量申请内存地址

    2019-04-24 19:46:21
    说到C#内存地址的问题就不得不说几个概念: 1.值类型和引用类型: 值类型和引用类型变量很基础的问题,简单点来说常用的int,bool,float等就是C#中的值类型变量,而Interface、Class等均为引用类型变量。 那么值...
  • 突然想到Python的可变类型和不可变类型,在复习数据结构与算法时,用的C++,想看一下两种语言的变量地址什么不同 在Python中,可以发现不可变类型,比如int类型,元组,当给变量赋值不同的值时,变量的地址会变化...
  • 实际是地址分配问题。(==永远是比较地址) 基本类型都是存在栈里面的,...但是对于其他类型,都是存在堆里面的动态分配内存,所以每一次新建一个数据都会动态分配一个内存地址,所以的时候,当然内存地址是不一样的。
  • C语言内存地址对齐详解

    千次阅读 2012-08-06 16:04:59
    现代计算机中内存空间都按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上...
  • 平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据,某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常 2.硬件原因:经过内存对齐之后,CPU的内存访问速度大大提升。具体...
  • String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的 a、可变性:String类中使用字符数组保存字符串,private final char value[],所以string对象是不可变的。StringBuilder与StringBuffer都...
  • 什么是动态数据类型

    千次阅读 2016-07-02 13:02:45
    动态数据类型 ...//函数id() 的作用查看变量指向的内存地址。见help(id) //内存中分配两个单元,存放数字12和13。 //x,y分别指向内存地址,类似C语言的指针 x=12 y=13 print 'x=',x,id(x) print 'y=
  • 1、平台原因:(移植原因)不是所有的硬件平台都能访问任意地址上的任意数据,某些平台上只能在某些地址处取特定类型的数据,否则,抛出硬件异常 2、性能问题:数据结构(尤其栈),应该,尽可能的在自然边界上...
  • 简单类型与复杂类型 简单类型有叫做基本数据类型或值类型;复杂类型又叫做引用类型。 值类型:简单数据类型/基本数据...引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型
  • 也就是说对象位于内存的某个地址中,如果我们知道对象的地址类型,就能访问它……翻译自 Bjarne Stroustrup 《The C++ Programming Language》(Fourth Edition),Chapter 7.在学习 C 与 C++ 语言时,指针与引用...
  • 浅拷贝把原列表第一层的内存地址拷贝给了新列表。如果原列表存的都不可变数据类型,那不会出现问题;但是如果原列表包括可变数据类型,那就会出现问题,因为可变数据类型的内存两个列表共享的。 要想copy得到...
  • 说说基本数据类型和复杂数据类型特点是什么? 基本数据类型 变量名在栈上存储的是具体的数值 使用“==”是判断值是否相等 复杂数据类型 变量名栈上存储的是对象的[内存地址],内容存储在堆上面 使用“==”是判断...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,356
精华内容 1,742
关键字:

内存地址是什么类型