鍒犻櫎錛★紞錛嶏紞0
淇敼錛★紞錛嶏紞1
娣誨姞錛★紞錛嶏紞2
鍒犻櫎錛紞錛嶏紞3
淇敼錛紞錛嶏紞4
娣誨姞錛紞錛嶏紞5
……
銆銆鐞嗚涓婂彲浠ユ湁錛釜鎿嶄綔錛岃繖鍙栧喅浜庝綘鐢ㄤ簬鍌ㄥ瓨鐢ㄦ埛鏉冮檺鍊肩殑鏁版嵁綾誨瀷浜?jiǎn)銆?/p>
銆銆榪欐牱錛屽鏋滅敤鎴鋒湁鏉冮檺錛氭坊鍔狅肌錛嶏紞錛?錛涘垹闄わ饑錛嶏紞錛?錛涗慨鏀癸饑錛嶏紞錛?銆傞偅鐢ㄦ埛鐨勬潈闄愬?purview =2^2+2^3+2^4錛?8錛屼篃灝辨槸2鐨勬潈鐨勫拰浜?jiǎn)銆傚寲鎴愪簩榪涘埗鍙互琛ㄧず涓?1100銆傝繖鏍鳳紝濡傛灉瑕侀獙璇佺敤鎴鋒槸鍚︽湁鍒犻櫎錛㈢殑鏉冮檺錛屽氨鍙互閫氳繃浣嶄笌榪愮畻鏉ュ疄鐜般傚湪錛絹锝栵絹閲岋紝浣嶄笌榪愮畻榪愮畻絎﹀彿涓猴紗錛屽嵆鏄細(xì)
int value = purview &((int)Math.pow(2,3));
銆銆浣犱細(xì)鍙戠幇錛屽綋鐢ㄦ埛鏈夋搷浣滄潈闄愭椂錛岃繍綆楀嚭鏉ョ殑緇撴灉閮戒細(xì)絳変簬榪欎釜鎿嶄綔闇瑕佺殑鏉冮檺鍊鹼紒
銆銆鍘熺悊錛?/p>
銆銆浣嶄笌榪愮畻錛岄【鍚嶆濅箟灝辨槸瀵逛綅榪涜涓庤繍綆楋細(xì)
銆銆浠ヤ笂闈㈢殑寮忓瓙涓轟緥錛歱urview & 2^3 涔熷氨鏄28&8
銆銆灝嗗畠浠寲鎴愪簩榪涘埗鏈?/p>
銆 11100
錛?01000
-------------------
銆 01000 == 8(鍗佽繘鍒?銆錛濓紳銆2^3
銆銆鍚岀悊錛屽鏋滆楠岃瘉鏄惁鏈夊垹闄わ肌錛嶏紞錛?鐨勬潈闄?/p>
銆銆鍙互鐢細(xì)purview &((int)Math.pow(2,0));
銆銆鍗籌細(xì)
銆 11100
錛?00001
------------------------
銆 00000 == 0(鍗佽繘鍒?銆銆錛侊紳銆2^0
銆銆榪欑綆楁硶鐨勪竴涓紭鐐規(guī)槸閫熷害蹇傚彲浠ュ悓鏃跺鐞嗭籍涓潈闄愩傚鏋滄兂楠岃瘉鏄惁鍚屾椂鏈夊垹闄わ肌錛嶏紞錛?鍜屽垹闄わ饑錛嶏紞錛?鐨勬潈闄愶紝鍙互鐢╬urview&(2^0+2^3)==(2^0+2^3)?true:false;璁劇疆澶氳鑹茬敤鎴楓傛牴鎹潈闄愬煎垽鏂敤鎴風(fēng)殑瑙掕壊銆?/p>
銆銆涓嬮潰鎻愪緵涓涓猨ava鐨勫崟鎿嶄綔鏉冮檺鍒ゆ柇鐨勪唬鐮侊細(xì)
//userPurview鏄敤鎴峰叿鏈夌殑鎬繪潈闄?br />
//optPurview鏄竴涓搷浣滆姹傜殑鏉冮檺涓轟竴涓暣鏁幫紙娌℃湁緇忚繃鏉冪殑錛侊級(jí)
public static boolean checkPower(int userPurview, int optPurview)
{
int purviewValue = (int)Math.pow(2, optPurview);
return (userPurview & purviewValue) == purviewValue;
}
銆銆褰撶劧錛屽鏉冮檺鐨勯獙璇佸彧瑕佹墿灞曚竴涓嬪氨鍙互浜?jiǎn)銆?/p>
銆銆鍑犵偣娉ㄦ剰浜嬮」錛氶鍏堬紝涓涓郴緇熷彲鑳芥湁寰堝鐨勬搷浣滐紝鍥犳錛岃寤虹珛鏁版嵁瀛楀吀錛屼互渚挎煡闃咃紝淇敼鏃朵嬌鐢ㄣ傚叾嬈★紝濡傛灉鐢ㄦ暟鎹簱鍌ㄥ瓨鐢ㄦ埛鏉冮檺錛岃娉ㄦ剰鏁板肩殑鏈夋晥鑼冨洿銆傛搷浣滄潈闄愬艱鐢ㄥ敮涓鐨勬暣鏁幫紒