Algorithm Interview: Bit Convertision Between Two Integers


Interview Question:
Write a Java method that will return the number of bits that will need to be changed in order to convert an integer, X, into another integer, Y and vice versa. The method should accept two different integers as input.

Answer:
The key here is to use XOR operation z = x ^ y; to get the bit difference between them, then count the bit set in the result z.

public static int bitConvertBetweenTwoTintegers(int x, int y) {
  // XOR x and y to get the bit difference between x and y
  int z = x ^ y;
  return numberofBits(z);
}

public static int numberofBits(int x) {
  int n = 0;
  while (x != 0) {
    n = n + 1;
    // clear the least significant bit set
    x = x & (x - 1);
  }
  return n;
}

Labels

adsense (5) Algorithm (69) Algorithm Series (35) Android (7) ANT (6) bat (8) Big Data (7) Blogger (14) Bugs (6) Cache (5) Chrome (19) Code Example (29) Code Quality (7) Coding Skills (5) Database (7) Debug (16) Design (5) Dev Tips (63) Eclipse (32) Git (5) Google (33) Guava (7) How to (9) Http Client (8) IDE (7) Interview (88) J2EE (13) J2SE (49) Java (186) JavaScript (27) JSON (7) Learning code (9) Lesson Learned (6) Linux (26) Lucene-Solr (112) Mac (10) Maven (8) Network (9) Nutch2 (18) Performance (9) PowerShell (11) Problem Solving (11) Programmer Skills (6) regex (5) Scala (6) Security (9) Soft Skills (38) Spring (22) System Design (11) Testing (7) Text Mining (14) Tips (17) Tools (24) Troubleshooting (29) UIMA (9) Web Development (19) Windows (21) xml (5)