forked from TheAlgorithms/Java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFirstDifferentBit.java
More file actions
33 lines (31 loc) · 899 Bytes
/
FirstDifferentBit.java
File metadata and controls
33 lines (31 loc) · 899 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.thealgorithms.bitmanipulation;
/**
* This class provides a method to find the first differing bit
* between two integers.
*
* Example:
* x = 10 (1010 in binary)
* y = 12 (1100 in binary)
* The first differing bit is at index 1 (0-based)
* So, the output will be 1
*
* @author Hardvan
*/
public final class FirstDifferentBit {
private FirstDifferentBit() {
}
/**
* Identifies the index of the first differing bit between two integers.
* Steps:
* 1. XOR the two integers to get the differing bits
* 2. Find the index of the first set bit in XOR result
*
* @param x the first integer
* @param y the second integer
* @return the index of the first differing bit (0-based)
*/
public static int firstDifferentBit(int x, int y) {
int diff = x ^ y;
return Integer.numberOfTrailingZeros(diff);
}
}