为什么所有数据类型都是2的幂?

Viv*_*oel 7 c++ programming-languages

为什么所有数据类型大小总是2的幂?

我们举两个例子:

short int 16
char 8
Run Code Online (Sandbox Code Playgroud)

他们为什么不跟随?

short int 12
Run Code Online (Sandbox Code Playgroud)

Mar*_*tos 11

这是一个实现细节,并非总是如此.一些奇特的架构具有非二次幂数据类型.例如,36位字在一个阶段很常见.

这两天几乎普及的原因是它通常简化了内部硬件实现.作为一个假设的例子(我不做硬件,所以我不得不承认这主要是猜测),操作码的一部分表明它的一个参数可能被存储为两个幂的索引参数中的字节数,因此两个位足以表示参数为8,16,32或64位中的哪一位,并且将其转换为适当的锁存信号所需的电路将非常简单.