位运算

    xiaoxiao2021-03-25  87

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

    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(); } }

    //持续更新

    转载请注明原文地址: https://ju.6miu.com/read-21202.html

    最新回复(0)