为什么我们总是将常量声明为2的幂?

10 bit-manipulation constants

我在其他代码中看到的大多数常量都是2的幂,即

#define SIZE 256
Run Code Online (Sandbox Code Playgroud)

要么

public static final int SIZE = 2048;
Run Code Online (Sandbox Code Playgroud)

有什么特别的原因我们这样做而不是ie

#define SIZE 257
Run Code Online (Sandbox Code Playgroud)

Kev*_*ose 29

2的幂是方便的,因为它们很好地映射到硬件中的底层约束.

如:

  1. 页面大小
  2. 地址空间限制
  3. 对齐constaints(一般是DWORD或QWORD对齐,两个幂都是2)

对于标志,2的幂始终具有单个位集.所以像MY_FLAG_1 | MY_FLAG_2 | MY_FLAG_3 | ...只有两个人的权力.同样用于测试标志&.

对于缓冲区大小等,它也可以选择最接近的2的较大功率.


zom*_*bat 18

一个很好的理由是bitmasking.例如,如果使用常量来表示对象(或其他任何东西)的属性,则可以通过位掩码将许多属性保存到单个整数中,并在以后标识各个属性.非常适合在数据库中保存许多"标志".