使用场景:
1:玩家每5/10级可以领取一次奖励,需要记录玩家是否已领取
2: 游戏有10/20/30级vip,每个等级可以领取一次 对应的奖励
这种情况下,使用 int 类型来储存比较方便,如果状态的数量大于30个,可以使用long;
注意:这里使用的是java语言,Java数字都是有符号的,不能使用32位,使用其他语言 也要注意这个问题;
public static void main(String[] args) {
int num = 0;
int i = setBitTrue(num, 31);
System.out.println(Integer.toBinaryString(i));
System.out.println(getBit(i, 31));
}
public static boolean getBit(int value, int index) {
return ((value & (1 << index)) != 0);
}
public static int setBitTrue(int value, int index) {
int mask = 1 << index;
return (value | (mask));
}
public static int setBitFalse(int value, int index) {
int mask = ~(1 << index);
return (value & (mask));
}