一个位置代表一个状态 T/F或者0/1
二进制 | 十进制 |
---|---|
1 | 0000 0001 |
2 | 0000 0010 |
4 | 0000 0100 |
8 | 0000 1000 |
16 | 0001 0000 |
32 | 0010 0000 |
64 | 0100 0000 |
128 | 1000 0000 |
位运算包含
右移>>、左移<<、与&、或|、取反~、异或^
public class IntSwitchUtils {
/**
* 获取固定位置状态
* @param s switch开关
* @param b 位置 从0开始
* @return
*/
public static boolean getBooleanForSwitch(int s,int b){
return getSwitch(s,b)>0;
}
private static int getSwitch(int s,int b){
return s & 1 << b;
}
/**
* 设置固定状态后的值
* @param s switch开关
* @param b 位置 从0开始
* @param v 具体值
* @return
*/
public static int setSwitch(int s,int b,boolean v){
if(v){
return s | 1 << b;
}else {
return s & ~(1 << b);
}
}
public static void main(String[] args) {
System.out.println(Integer.toBinaryString(31));
System.out.println(getSwitch(31,11));
System.out.println(getSwitch(30,0));
System.out.println(getSwitch(30,5));
System.out.println(setSwitch(32,5,false));
}
}
11111
0
0
0
0