计算机存储详解

内存

  • 计算机的作用
    • 存储和运算二进制的数据
  • 计算机如何实现1+1=?操作
    • 将1加载到计算机内存中,然后基于计算机的加法寄存器对指定内存中存储的数据转化为二进制进行加法运算。
  • 变量的概念
    • 本质讲,变量指的就是计算机中的某一块内存空间
    • 内存空间有2个固有属性
      • 地址:使用16进制的数表示
        • 作用:方便cpu寻址,门牌号
      • 大小:bit,byte,kb,mb,gb
        • 决定该块内存存储的数值的范围
  • 理解 a = 10的内存图(引用,指向)
    • 引用:就是变量,通常将变量表示的就是一块内存空间的地址
    • 指向:如果一个变量或者引用存储表示了某块内存空间的地址后,则该变量或引用指向了该块内存空间

不同数据占用内存空间的大小

  • bit(位):1bit只能存储一位二进制的数。

  • byte字节:8bit。

给相同的数据类型的数据开辟固有大小的内存空间

  • 整形数据:4byte

  • 浮点型:4,8byte

  • 字符型:1byte

  • 但是假如当你输入的数据超过固有大小的内存空间,python会给你扩容,所以不用担心,但是一般情况4个字节够了,有正负百亿呢。还有为啥不根据存储数据的大小自动开辟适合此数据的空间大小,这样固然好,但是当数据频繁更改时,这样太浪费效率。所以有个固有的大小,不够再说

  • np.iinfo("int8")
    iinfo(min=-128, max=127, dtype=int8)
    #为什么是-128到127  这是因为int8数据类型代表8位,1字节。所以用2进制表示最大就是8个111111111的二进制转换为10进制就是255.但是这是有符号的,所以符号占用1位,就是7个11111111的二进制转换成10进制,所以-127 到 128
    

详解计算机存储

先上图

我们看到a =1 占4个字节,因为这是计算机给他开辟的固有内存大小。

首先。举个例子: a = "洲神" b = a+”1“

这是定义一个引用a,指向a的数据的内存地址。内存存储都是二进制的。他是经过解码成2进制数据存储在内存中,当你计算b=a+1时,他们将这些二进制数据加载到内存中,进行计算,然后算出一个新的二进制数据。如果是int类型数据就转换成10进制,得出计算结果。如果是字符串就需要解码了,python3都是Unicode。

a = "洲神"是怎么存储到内存中的,就是将洲神解码成2进制,是python3解码后存储内存中。像编码解码,存储内存中,加载内存中都是python做的。会按照Unicode编码解码。

假如说对象的调用,算不算运算,不算!例如b = track() 此时b是个对象,b中此时封装了属性和方法都在内存中。调用对象中属性或者方法就是加载到内存中取出数据而已。真正的加减乘除才是运算。

原文地址:https://www.cnblogs.com/zzsy/p/12682187.html