位图、位运算实现加减乘除

master
kn5886348135 3 years ago
parent 11adcc341e
commit 2da13ad662

@ -51,6 +51,37 @@ private static Node reverDoubleLinkedList(Node head) {
### 位图
位图的功能
位图的好处
位图的用法
位图的功能 保存已知最大值的集合
位图的好处 极大的节省空间
位图的实现 java.util.BitSet
```Java
public class BitMap {
private long[] bits;
public BitMap(int max) {
bits = new long[(max + 64) >> 6];
}
// 给定数字除以64的结果result模64的结果mod分开保存bits[result]位置的mod位设置为1
public void add(int num){
// num&63等于num%64
bits[num >> 6] |= (1L << (num & 63));
}
public void delete(int num){
bits[num >> 6] &= ~(1L << (num & 63));
}
public boolean contains(int num){
return (bits[num >> 6] & (1L << (num & 63))) != 0;
}
}
```
#### 位运算实现加减乘除 LeetCode29
加法add a^b结果为无进位相加(a&b)<<10
减法delete add(a,add(~b,1))取反加1后为负数。
乘法 a左移b的每一位进制的位数相加。
除法 先取绝对值a右移到刚好大于等于b拿到一个商最后所有商相加补上符号。对系统最小值特殊处理。

Loading…
Cancel
Save