按位与的日常应用

按位与 & 运算符

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]);
	}
}
posted @ 2023-03-21 14:59  众神之翼  阅读(81)  评论(0)    收藏  举报