我有以下 Java 代码:
long a = Long.parseLong("11001100", 2);
long b = Long.parseLong("11000000", 2);
int npos = 0 ;
int pos = 0 ;
long n = ~(a ^ b) ;
int cnt = 0;
while (n != 0) {
pos++ ;
if ((n & 3) == 3) cnt++; // count how many matches
else{
npos = pos ; // position that not matched also giving wrong which should be 2 nd position.
}
n >>>= 2;
}
System.out.println(npos + " " + cnt) ; // also print which two bits are not matched i.e. 00 and 11
我试图找出两个整数中有多少个两位序列匹配。我还想找出哪两位不匹配。有人可以帮我怎么做吗?
PS:我的原始代码中没有字符串,只有整数。因此,我不能进行字符串操作。
编辑:
long a = Long.parseLong("11000100", 2);
long b = Long.parseLong("11000000", 2);
long mask = 0x03;
int npos = 0 ;
int cnt = 0;
long p1 = 0;
long p2 = 0;
for (int pos = 0; pos < 64; pos++, mask <<= 2) {
if ((a & mask) == (b & mask)) {
cnt++; // count how many matches
} else {
npos = pos ; // *last* position that did not match
p1 = (a & mask) ; // two bits that not matched
p2 = (b & mask) ; // two bits that not matched
}
}
System.out.println(npos + " " + cnt + " " + p1 + " " + p2) ; // also print which two bits are not matched i.e. 00 and 01