Skip to content
2 changes: 2 additions & 0 deletions DIRECTORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
* [NumberAppearingOddTimes](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/NumberAppearingOddTimes.java)
* [NumbersDifferentSigns](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/NumbersDifferentSigns.java)
* [OnesComplement](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/OnesComplement.java)
* [ParityCheck](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/ParityCheck.java)
* [ReverseBits](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/ReverseBits.java)
* [SingleBitOperations](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/SingleBitOperations.java)
* [SingleElement](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/SingleElement.java)
Expand Down Expand Up @@ -656,6 +657,7 @@
* [NumberAppearingOddTimesTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/NumberAppearingOddTimesTest.java)
* [NumbersDifferentSignsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/NumbersDifferentSignsTest.java)
* [OnesComplementTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/OnesComplementTest.java)
* [ParityCheckTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/ParityCheckTest.java)
* [ReverseBitsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/ReverseBitsTest.java)
* [SingleBitOperationsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/SingleBitOperationsTest.java)
* [SingleElementTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/SingleElementTest.java)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.thealgorithms.bitmanipulation;

/**
* The ParityCheck class provides a method to check the parity of a given number.
* <p>
* Parity is a mathematical term that describes the property of an integer's binary representation.
* The parity of a binary number is the number of 1s in its binary representation.
* If the number of 1s is even, the parity is even; otherwise, it is odd.
* <p>
* For example, the binary representation of 5 is 101, which has two 1s, so the parity of 5 is even.
* The binary representation of 6 is 110, which has two 1s, so the parity of 6 is even.
* The binary representation of 7 is 111, which has three 1s, so the parity of 7 is odd.
*
* @author Hardvan
*/
public final class ParityCheck {
private ParityCheck() {
}

/**
* This method checks the parity of the given number.
*
* @param n the number to check the parity of
* @return true if the number has even parity, false otherwise
*/
public static boolean checkParity(int n) {
int count = 0;
while (n > 0) {
count += n & 1;
n >>= 1;
}
return count % 2 == 0;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.thealgorithms.bitmanipulation;

import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

import org.junit.jupiter.api.Test;

public class ParityCheckTest {
@Test
public void testIsOddParity() {
assertTrue(ParityCheck.checkParity(5)); // 101 has 2 ones (even parity)
assertFalse(ParityCheck.checkParity(7)); // 111 has 3 ones (odd parity)
assertFalse(ParityCheck.checkParity(8)); // 1000 has 1 one (odd parity)
}
}