gpt4 book ai didi

java - 当你将 int 左移时会发生什么

转载 作者:行者123 更新时间:2023-12-01 17:41:08 25 4
gpt4 key购买 nike

我试图理解此处创建的部分代码,用于创建 my_hashset:https://leetcode.com/problems/design-hashset/discuss/548792/Java-solution-faster-than-99

   class HashCode_from_leet {
int[] bitArr;
private static final int MAX = 100000;
private static final int INT_SIZE = Integer.SIZE;

public HashCode_from_leet() {
bitArr = new int[MAX / INT_SIZE + 1];
}

public void add(int key) { //pass in 5
int ind = key / INT_SIZE;
int bit = key % INT_SIZE;
int bitMask = 1 << bit; //QUESTION: why does bitMask = 32?
bitArr[ind] |= bitMask; // QUESTION: what does '|=' mean?
}

// NOTE I REMOVED SOME METHODS

public boolean contains(int key) {
int ind = key / INT_SIZE;
int bit = key % INT_SIZE;
int bitMask = 1 << bit;
return (bitArr[ind] & bitMask) != 0;
}


public static void main(String[] args) {
HashCode_from_leet hfl = new HashCode_from_leet();
hfl.add(5);
System.out.println(hfl.contains(5));
}
}

当我将 5 传入 add(int key) 时方法 bitMask = 32

我不知道为什么——我明白<<意味着左移,所以我们取 5 并将其左移,但会认为等于 5*10^2?

最佳答案

当你 shift left X 的整数,例如:Z =(Y << X)它会实际执行此操作 :Z = (Y * (2^X))

当你 shift right X 的整数,例如:Z =(Y >> X)它会实际执行此操作 :Z = (Y / (2^X))

关于java - 当你将 int 左移时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61172019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com