只是为了确保每个地址都包含一个字节?所以说你有理论地址FFF0和FFFF:这两个地址之间有16个值,这意味着它们之间包含16个字节,或8 x 16位?每个地址都链接到一个字节?
答案 0 :(得分:0)
只是为了确保每个地址都包含一个字节吗?
...这意味着它们之间包含16个字节,或8 x 16位?
每个地址都链接到一个字节?
对所有三个问题都是肯定的。
这就是为什么32位寻址的限制,你只能访问2 ^ 32字节== 4,294,967,296字节== 4 GiB。每个可寻址的存储器位置都可以访问1个字节。
如果我们可以使用一个地址访问2个字节,那么该限制将是8 GiB。并且必须修改现代芯片和所有软件的架构以确定它们是想要两个字节还是只想要第一个或第二个。所以你需要再多说一点才能确定。猜猜看,如果你有33位机器,那就是我们得到的......最大可寻址空间为8 GiB。哪个仍然是有效的1字节地址。 Workarounds do exist但这与您的问题无关。
* GiB = Binary GigaBytes。
请注意,这与"类型"无关。其中char
为1个字节,int
为4个字节。当尝试访问存储在某个位置的存储变量/数据的值时,编程语言会对此进行补偿。它们实际上是以总位数而不是总字节数计算的。所以int被认为是32位而不是4位。当C从内存中获取int
的值时,它将获取所有4个字节,即使int的地址仅指一个,即第一个字节的地址。
答案 1 :(得分:0)
是。地址映射到字节1到1,即使它们希望您一次使用两个或四个字节的字大小。