置位操作
x |= (1<<y) //将X的第Y位置1
x &= ~(1<<y) //将X的第Y位清0
判断操作
0 != x & (1<<y) // 判断x的y位的 是否为 1
(0 == x & (1<<y)) // 判断x的y位的 是否为 0
合并操作
long long flag1; 8字节 * 8
long long flag2; 8 字节 * 8
共表示 128 位
static const int MAX_MOUNT_SPECIAL_IMAGE_ID = 63; // 拓展前最大特殊形象ID
static const int MAX_MOUNT_SPECIAL_IMAGE_ID2 = 127; // 最大特殊形象ID
读值:
扫描二维码关注公众号,回复:
3031214 查看本文章
if (attr_id <= MAX_MOUNT_SPECIAL_IMAGE_ID)
{
is_active = 0 != (active_special_image_flag & ((long long)1 << attr_id));
}
else if ( attr_id <= MAX_MOUNT_SPECIAL_IMAGE_ID2)
{
int tmp_attr_id = attr_id - MAX_MOUNT_SPECIAL_IMAGE_ID;
is_active = 0 != (active_special_image_flag2 & ((long long)1 << tmp_attr_id));
}
赋值
if (attr_id <= MAX_MOUNT_SPECIAL_IMAGE_ID)
{
active_special_image_flag |= ((long long)1 << attr_id);
}
else if (attr_id <= MAX_MOUNT_SPECIAL_IMAGE_ID2)
{
int tmp_attr_id = attr_id - MAX_MOUNT_SPECIAL_IMAGE_ID;
active_special_image_flag2 |= ((long long)1 << tmp_attr_id);
}