计算机如何存储一个数据类型的对象?

先记录几个小知识点
在大多数的计算机,最小地址寻址单位是字节,而不是位。
机器级别程序把内存看作是一个很大字节数组,称为虚拟内存,所以虚拟内存地址的集合就是虚拟内存空间。
对于一个字长w的机器,它虚拟内存可寻址范围是0-2^w-1,一个32位字长的虚拟地址空间是4GB。

计算机如何存储一个数据类型的对象?

比如一个int 对象 0x01234567
首先最小的内存单位是一个字节,也就是8位,那一个字节可以存储多少个十六进制的数字呢?
因为计算机可以用4位来表示一个十六进制的数字,所以一个字节可以存储2个十六进制的数字!
假设现在存储的地址从0x100开始,那么0x100这个位置存储0x01还是0x56,还是别的呢?
其实在计算机系统里,有两种不同的存储顺序,一个叫大端法,一个叫小端法。
大端法,顾名思义,从高位的顺序开始存储,也就是说0x100开始,存储0x01 0x23 0x45 0x67
小端法,也相应从0x100开始,存储0x67 0x45 0x23 0x01
大端法

地址 0x100 0x101 0x102 0x103
存储内容 0x12 0x23 0x45 0x67

小端法

地址 0x100 0x101 0x102 0x103
存储内容 0x67 0x45 0x23 0x01

需要注意一下的是,对于32bit和64bit的机器,int对象都是占4字节。但是对于long型,在32bit机器上占4个字节,但是在64bit机器上却是占8字节的。

不管机器采用哪种顺序存储,程序员也不可见,但是不管哪种类型,程序编译出来的结果都是一样的。
不过不同存储顺序有时候会有一些问题。不过我觉得对于我来说,以后估计也不会遇到。

你可能感兴趣的:(计算机系统,寻址,字节顺序,内存,数据类型)