将位掩码分配给整数值的最简单方法是什么?例如,我想要整数,第一,第三和第四位= 1,其他= 0.
当然我在寻找代码,而不是单一价值!当然有很多可能性,但我试图找到最简单,最具描述性的外观
我认为最好的思考方式(!)只是从0开始索引位,然后应用"设置第n位,按位与值(1 << n)":
int first_third_and_fourth = (1 << 0) | (1 << 2) | (1 << 3);
Run Code Online (Sandbox Code Playgroud)
如果您希望代码在位数方面可读,那么这样的东西可能会有用:
#define b0 0x0001
#define b1 0x0002
#define b2 0x0004
#define b3 0x0008
#define b4 0x0010
:
#define b15 0x8000
int mask = b3|b2|b0;
Run Code Online (Sandbox Code Playgroud)
但是,过了一段时间你应该能够告诉哪些十六进制值与哪些位相关,你不需要那样的助记符技巧:
int mask = 0x000d;
Run Code Online (Sandbox Code Playgroud)