位运算

来源:互联网 发布:网络弊大于利四辩总结 编辑:程序博客网 时间:2024/06/06 02:10

记录一些位运算的小技巧:

1.&(按位与)判断奇偶

num & 1 == 1

为true即奇数


2.^(按位异或)用于两数互换

数学基础:  

a ^ a == 0         

a ^ 0 == a

两个数a,b交换:

a = a ^ b;

b = a ^ b;//a ^ b ^ b == a

a = a ^ b;// a ^ b ^ a == b


3.求子集

思路就是以二进制编码的方法来穷举,如打印{a,b}的子集,共

2^2=4个,可以分别编码为00,01,10,11,有“1”就输出。

00即表示空集。

public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("A");list.add("B");int len = 1 << list.size();for (int i = 0; i < len; i++) {int num = i;for (int j = 0; j < list.size(); j++) {if ((num & 1) == 1) {System.out.print(list.get(j) + " ");}num >>= 1;}System.out.println();}}



//持续更新







0 0
原创粉丝点击