Java中的按位运算:测试是否在“1010101111011”中设置了一个位?

时间:2012-11-01 15:00:53

标签: java bit-manipulation bit

假设我有一些用户输入(如String),如“11010011011”。

现在我想检查特定位置的位是否设置(每个数字应该作为标志)。

注意:我收到用户输入的字符串。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

您可以按原样处理字符串 - 例如,您要检查左侧的第一位:

if (input.charAt(0) == '1') { //

或者,如果您想使用BitSet,可以在循环中初始化它:

String input = "11010011011";
BitSet bs = new BitSet(input.length());
int i = 0;
for (char c : input.toCharArray()) {
    if (c == '1') bs.set(i);
    i++;
}

然后检查第i位是否设置:

boolean isSet = bs.get(i);

答案 1 :(得分:4)

如果要使用按位运算,则首先将字符串转换为整数并使用位掩码进行测试:

int val = Integer.parseInt("11010011011", 2);
System.out.println(val & (1<<0)); //First bit
System.out.println(val & (1<<1)); //Second bit
System.out.println(val & (1<<2)); //Third bit
.....