낙찰 공구.

1827 단어
항상 한 객체는 객체에 레이블을 지정하는 데 사용되는 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));
		
	}

}

출력:
4	100
12	1100
8	1000
false
false
false
true
false

좋은 웹페이지 즐겨찾기