一些位运算 一些位运算 2020年5月12日 凌晨 760 字 7 分钟 位运算 1234567891011121314151617181920212223242526272829303132与运算&: 0&0=0, 0&1=0, 1&0=0, 1&1=1 0011& 0101= 0001或运算|: 0|0=0, 0|1=1, 1|0=1, 1|1=1 0011| 0101= 0111异或运算^: 0^0=0, 0^1=1, 1^0=1, 1^1=0 0011^ 0101= 0110左移运算,低位补00110 << 2 = 1000等同于乘以2的2次方右移运算,自然数高位补0,负数高位补10110 >> 2 = 00011001 >> 2 = 1110无符号右移运算,高位补00110 >> 2 = 0001等同于除以2的2次方取反运算~ 0110 = 1001 修改位 123456789下标 3210 0111 & 1101 (1<<3-1<<1) = 0101 下标 3210 1000 | 0010 (1<<1) = 1010 123456public int set0(int n, int i) { return (n & (i<<32 - 1 << i));}public int set1(int n, int i) { return (n | (1 << i));} 获取位情况 12345678下标 3210 1010 & 1000 (1<<3) = 1000=(1<<3)>0 0101 & 1000 (1<<3) = 0000=0 123public int getb(int n, int i) { return (n & (1 << i)) > 0 ? 1 : 0;} 算法 一些位运算 https://cellargalaxy.github.io/posts/算法/7.一些位运算/ 作者 cellargalaxy 发布于 2020年5月12日 许可协议 Linux的IO模型 上一篇 一些SQL知识点 下一篇 Please enable JavaScript to view the comments