gpt4 book ai didi

java - << 和 |= 在 Java 中的含义

转载 作者:行者123 更新时间:2023-11-29 07:03:51 25 4
gpt4 key购买 nike

有一个在 Java 中实现代码的问题,我必须在其中查找字符串是否具有唯一字符,而无需创建新的数据结构。

Java 实现如下:

public static boolean isUniqueChars(String str) { 
int checker = 0;
for (int i = 0; i < str.length(); ++i) {
int val = str.charAt(i) - 'a';
if ((checker & (1 << val)) > 0) return false;
checker |= (1 << val);
}
return true;
}

在第 5-6 行中,有一个 << 我不太明白。在第 6 行,我不明白“|”是什么符号确实如此。

有人可以简要解释这段代码的工作原理吗?谢谢。

最佳答案

<强>1。对于这个符号: <<

在您的代码中:1 << val表示 (int)Math.pow(2,val) = 2 ^ val



<强>2。对于这个符号: >>

  >> is  bit-shift operator

x >> N表示(如果您将其视为一串二进制数字):

最右边N位被丢弃

最左边的位根据需要被复制多次以将结果填充到原始大小(32 或 64 位), 例如

00000000000000000000000000101011 >> 2 -> 00000000000000000000000000001010

11111111111111111111111111010100 >> 2 -> 11111111111111111111111111110101


<强>3。对于这个符号: |=

表示按位包含或和赋值运算符

例如:

            checker |= (1<<val) 
is same as checker |= (2^val)
is same as checker = checker | (2^val) (*)

然后:A | B ( | means Binary OR Operator copies a bit if it exists in either operand)

示例

   A      = 00101010
B = 01101000
A | B = 01101010

    0 OR 0 = 0  , 1 OR 0 = 1
1 OR 1 = 1 , 0 OR 1 = 1

关于java - << 和 |= 在 Java 中的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22135980/

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