一个int储存多种状态信息

使用场景:

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

    /**
     * 获取 一个状态值value的 第index位
     *
     * @param value 保存状态的int值
     * @param index 获取第几位
     * @return
     */
    public static boolean getBit(int value, int index) {
        return ((value & (1 << index)) != 0);
    }

    /**
     * 将一个状态值的 index 位 设置为 1 : true
     *
     * @param value 保存状态的int值
     * @param index 设置第几位为 1
     * @return 加工后的值
     */
    public static int setBitTrue(int value, int index) {
        int mask = 1 << index;
        return (value | (mask));
    }

    /**
     * 将一个状态值的 index 位 设置为 0 : false
     *
     * @param value 保存状态的int值
     * @param index 设置第几位为 0
     * @return 加工后的值
     */
    public static int setBitFalse(int value, int index) {
        int mask = ~(1 << index);
        return (value & (mask));
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值