【问题标题】:Diagram of array of 8 8-bit characters8个8位字符数组示意图
【发布时间】:2013-04-16 01:58:44
【问题描述】:
下图是一个由 8 个 8 位(1 字节)字符组成的数组所使用的内存图。对 8 个 32 位整数和 8 个 64 位双精度数组做类似的图表。
Byte (Character) 1 2 3 4 5 6 7 8
Index 0 1 2 3 4 5 6 7
Address n n+1 n+2 n+3 n+4 n+5 n+6 n+7
你们知道这是什么意思吗?
32 位整数的字节是 0001 吗?
它的地址呢?
【问题讨论】:
标签:
c++
memory
integer
double
memory-address
【解决方案1】:
我认为这是一个旨在让您思考数组索引和实际内存地址之间差异的练习。索引 1 处的整数,即 myarray[1],将在地址 n+4 中找到,因为 32 位整数是 4 字节宽。
那么 32 位的情况可能是这样的?
32-Bit Integer 1 2 3 4 5 6 7 8
Index 0 1 2 3 4 5 6 7
Address n n+4 n+8 n+12 n+16 n+20 n+24 n+28
【解决方案2】:
我可以试一试。我相信它只展示了两件事:索引是如何将数据作为数组寻址,而地址是内存中的任意地址。
对于 32 位的情况(假设为小端),您将拥有
Word 1 | 2
Index 0 | 1
Address n+0 n+1 n+2 n+3 | n+4 n+5 n+6 n+7
前 4 个地址字节是 little endian 32 位第一个字。第二个 4 个地址字节是下一个 32 位字。继续。