package com.thealgorithms.bitmanipulation;
/**
* CountLeadingZeros class contains a method to count the number of leading zeros in the binary representation of a number.
* The number of leading zeros is the number of zeros before the leftmost 1 bit.
* For example, the number 5 has 29 leading zeros in its 32-bit binary representation.
* The number 0 has 32 leading zeros.
* The number 1 has 31 leading zeros.
* The number -1 has no leading zeros.
*
* @author Hardvan
*/
public final class CountLeadingZeros {
private CountLeadingZeros() {
}
/**
* Counts the number of leading zeros in the binary representation of a number.
* Method: Keep shifting the mask to the right until the leftmost bit is 1.
* The number of shifts is the number of leading zeros.
*
* @param num The input number.
* @return The number of leading zeros.
*/
public static int countLeadingZeros(int num) {
if (num == 0) {
return 32;
}
int count = 0;
int mask = 1 << 31;
while ((mask & num) == 0) {
count++;
mask >>>= 1;
}
return count;
}
}