打标、去标工具。

来源:互联网 发布:从零开始学mt4编程 编辑:程序博客网 时间:2024/03/29 03:43

经常有一个对象都是有一个Int类型的字段,用于给该对象进行打标。  一个int类型是32位,  就说明 这样的一个字段,可以被打上32个标 。 每一个标占1位 。  0表示未被打标,1表示已被打标。


写了一个Util来进行打标与去标操作。如下:

public class FlagBitUtil {public static final int FULL_FLAG = 0XFFFFFFFF ;/** * 打标 * @param falg 需要打标的源数 * @param offset 标位 */public static int sign(int flag , int offset){int offsetT = 1 << ( offset - 1);return flag | offsetT ;}/** * 去标 * @param falg 需要移除标的源数 * @param offset 标位 */public static int removeSign(int flag , int offset){int offsetT = 1 << ( offset - 1);offsetT = FULL_FLAG ^ offsetT ;return flag & offsetT ;}/** * 检查标位是否被打标 * @param flag * @param offset  标位 * @return 该标位是否被打标 */public static boolean checkSign(int flag , int offset){int offsetT = 1 << ( offset - 1);return (flag & offsetT) == offsetT ;}}



测试如下:

public class Test {public static void main(String[] args) {int flag = 0 ;//原始标flag = FlagBitUtil.sign(flag, 3);//将标的第3位标记 System.out.println(flag + "\t" + Integer.toBinaryString(flag));flag = FlagBitUtil.sign(flag, 4);  //将标的第4位标记System.out.println(flag + "\t" + Integer.toBinaryString(flag));flag = FlagBitUtil.removeSign(flag, 3) ;  //将标的第3位标记移除System.out.println(flag + "\t" + Integer.toBinaryString(flag));//检查第1、2、3、4、5位是否被打标System.out.println(FlagBitUtil.checkSign(flag, 1));System.out.println(FlagBitUtil.checkSign(flag, 2));System.out.println(FlagBitUtil.checkSign(flag, 3));System.out.println(FlagBitUtil.checkSign(flag, 4));System.out.println(FlagBitUtil.checkSign(flag, 5));}}

输出:
410012110081000falsefalsefalsetruefalse


0 0
原创粉丝点击