java - 在 Java 中,如何迭代两个字节数组的位?

标签 java arrays bit-manipulation

对于两个长度相等的字节数组 A 和 B,我想找到字节数组 A 中在字节数组 B 中设置的第一个未设置位,并返回该位的从零开始的索引或位置。我怎样才能这样做?

例如:

A: 1111 0000 0101
B: 1111 0000 1010
             ^

最佳答案

试试这个:

int length = A.length<B.length? A.length:B.length;
for (int i=0; i<length; i++)
{
    int x = A[i]^B[i];
    if (x != 0)
    {
        for (int j=0; true; j++)
        {
            if ((x&1) == 1)
                return Byte.SIZE*i+j;
            x >>= 1;
        }
    }
}
return -1;

关于java - 在 Java 中,如何迭代两个字节数组的位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22900149/

相关文章:

java - HSQLDB : Get table indices

java - 如何插入空值 Oracle 类型

java - 如何从 CSV 数据的第二行开始扫描到链接列表?

java - 为什么这会返回空数组列表?

javascript - 如何使用 filter() 方法从 JavaScript 中的数组数组中获取不同的值?

java - 有趣的循环和 boolean 值

c++ - 创建无符号 80 位变量

java - 检索具有相同值的所有映射键

c++ - 有效地交织位

c - 使用少于 5 个按位运算符实现 "logical not"