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

先记录几个小知识点
在大多数的计算机,最小地址寻址单位是字节,而不是位。
机器级别程序把内存看作是一个很大字节数组,称为虚拟内存,所以虚拟内存地址的集合就是虚拟内存空间。
对于一个字长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
大端法

地址0x1000x1010x1020x103
存储内容0x120x230x450x67

小端法

地址0x1000x1010x1020x103
存储内容0x670x450x230x01

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值