常见的置位操作

置位操作

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);

}

猜你喜欢

转载自blog.csdn.net/jonWei/article/details/82323042