为什么地址在c中的值总是偶数?

为什么地址在c中的值总是偶数?

计算机内存是由位组成的。比特被组织成组。计算机可能具有超过1,000,000,000字节或8,000,000,000位的千兆字节内存,但是到内存的物理连接不能简单地从该内存中获得任何特定的位。

当处理器想要内存中的数据时,它会在总线上放一个信号,请求内存中的特定字。总线很大程度上是连接计算机不同部分的一组电线。存储器的字是特定于该硬件的一定大小的一组位,可能是32位。当存储设备看到对一个字的请求时,它会立即获取这些位并将它们放到总线上。(它的总线将有32条或更多的线,因此它可以一次传输一个字的所有数据。)

让我们继续以32位字为例。由于存储器被分成32位的字,因此每个字具有32位的倍数或四个字节的存储器地址。4的倍数的每个地址(0,4,8,12,16,…4096、4100、4104、…)是一个单词的地址。处理器总是以字为单位读取或写入内存--这是硬件所能做的唯一交互;处理器不能从内存中读取单个字节。如果您的int包含在一个单词中,那么处理器可以通过请求该单词从内存中获取它。

另一方面,假设您的int从地址99开始。那么它的一个字节在开始于地址96 (地址96到99)的字中,并且它的三个字节在开始于地址100 (地址100到103)的字中。为了获得int,处理器必须读取两个字,然后将其中的字节拼接在一起形成一个int。

首先,这是浪费时间。从内存中进行两次读取比执行一次读取需要更长的时间。其次,如果处理器必须有额外的电线和电路才能做到这一点,它会使处理器更昂贵,消耗更多的能源,并占用处理器可能正在做的其他事情的资源,比如加法或乘法。

因此,处理器被设计成更喜欢对齐的数据。它们可能具有用于处理未对齐数据的组件,但使用这些组件可能需要额外的时间或资源。因此,编译器被设计为以更适合目标架构的方式对齐对象。

相关任务

盒子365app下载 星际战甲紫卡价值判断

星际战甲紫卡价值判断

📅 09-30 👁️ 954
365体育网在线手机版 神奇动物在哪里 (2016)    Full online with English subtitle for free – iQIYI
365速发app下载平台注册 产品经理如何画结构图

产品经理如何画结构图

📅 07-29 👁️ 4137
365体育网在线手机版 在哪里可以免费学英语?过来人真实经历告诉你