📌  相关文章
📜  二进制数组中零的个数 - Java (1)

📅  最后修改于: 2023-12-03 14:49:02.346000             🧑  作者: Mango

二进制数组中零的个数 - Java

介绍

本文将介绍如何使用Java编写一个函数,以计算二进制数组中零的个数。

实现

我们可以创建一个函数,使用循环来迭代数组,并通过位运算(&运算)来计算元素中1的个数。然后,将数组中的所有元素的1的个数相加,并将该值减去数组中元素的总数,以获取数组中零的个数。

public static int countZeros(int[] nums) {
    int numOnes = 0;
    for (int i = 0; i < nums.length; i++) {
        int num = nums[i];
        while (num > 0) {
            if ((num & 1) == 1) {
                numOnes++;
            }
            num = num >> 1;
        }
    }
    return nums.length * 32 - numOnes;
}

在这个函数中,我们使用一个循环来迭代数组中的每个元素。在内部,我们使用一个while循环来迭代元素的每一位。对于每一位,使用&运算符判断该位上是否为1,并在必要时将表示1的计数器加1。最后,将计算出的值从总位数中减去,以获取数组中零的个数。

测试
@Test
public void testCountZeros() {
    int[] nums = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
    int expected = 28;
    int actual = BinaryArray.countZeros(nums);
    assertEquals(expected, actual);
}

在测试中,我们创建了一个包含16个整数的数组,并将其传递给我们的函数。我们在该数组中有12个非零元素,所以我们预计函数将返回28。我们使用JUnit的assertEquals方法进行比较,以验证我们的预期值与实际计算值一致。

结论

我们介绍了如何使用Java编写一个函数,来计算一个二进制数组中零的个数。对于每个元素,我们使用位运算来计算其中的1的个数,并将这些计数累加起来。最后,我们从总的位数中减去该值,以获取数组中零的个数。