按位与的日常应用
按位与 & 运算符
0&0=0,0&1=0,1&0=0,1&1=1
总结:两者之间遇零即为零,同为一则为一
这种按位与,适合打包 <-> 拆分 的场景,例如,
以下商品清单:
1、麦旋风
2、红豆派
4、上校鸡块
8、加冰可乐
16、香辣鸡腿堡
32、薯条
上述条目编号数字,之所以如此命名,是因为它是按照二进制,来计算的,这样的好处是,比如,你选择后的结果时 12,那么它唯一可能得选项只会是4、8,绝不会出现唯二可能;
但如果是 以十进制命名的话,1,2,3,4,5,6。比如,你选择后的结果时5,那么存在的可能性分别为
5
1,4
2,3
这就造成了十进制并不适合此类场景的应用
以Java语言 为例,点击查看代码
/**
* num : 选择结果,选择的条目编号总和
* len : 条目总数
*/
public static String parseByteString(int num, int len) {
String result = "";
for(int i=0; i<len; i++) {
if(((num >> i) & 0x01) ==1){
String temp = (i +1).ToString();
result += temp + ",";
}
}
return result;
}
public static void main(String[] args){
String ret = parseByteString(5, 6);
String[] arr = ret.split(",");
for(int i=0; i<arr.length; i++){
System.out.println(arr[i]);
}
}

浙公网安备 33010602011771号