求大神,哪里错了?
64位机的内存地址为什么有0Xffffffffff位,假如内存这么大,一个内存单元8bit,那内存空间算出来是很大的。实际上内存绝不可能这么大。那这么多编号怎么回事,难道有些编号没占空间?是哪里想错了?
64位机的内存地址为什么有0Xffffffffff位,假如内存这么大,一个内存单元8bit,那内存空间算出来是很大的。实际上内存绝不可能这么大。那这么多编号怎么回事,难道有些编号没占空间?是哪里想错了?
2017-01-13
1,0XFF FF FF FF 应该是8个F
2,8bit 是代表8个二进制位 8个二进制 可以用一个字节表示 1 Byte 64位就是8个字节 8byte
3,既然是64位 那么 我们定义指针 一般 也会使用 64来表示一个地址,相对于 64位的系统 一般表示 一次能计算的数据长度是64位,还有寄存器 什么的 也是64位的 这个就是硬件了。那么 如果一个地址用64位来表示 在 实现上 相对来说比较简单 这个实现 不是说地址线 一般地址线 应该是50左右吧 或者更少
4,既然使用了64位 来操作 地址 那么 理论上64位 数字能表达的最大范围确实就是 0XFF FF FF FF
但是实际上确实 没有 这么大的内存 。确实很多位 理论上用不到
不过一般情况下这个地址 是个虚拟地址 只是映射到具体地址 之前看到的,这个就由操作系统来做映射了
还有就是 这样 有一个 好处就是 操作系统 可以 使用虚拟技术
让你以为 内存 足够大 而可以给你的 应用分配 理论上超出实际内存 的空间 来使用
那些 编号 既然不是真实的 所以你使用时候 也不必关心 他到底 真实值是多少 交给系统就好了
举报