Minimum Bit Flips to Convert Number

easy bitwise xor

Problem

You are given two non-negative integers start and goal (each up to 10⁹). A bit flip picks one bit of start's binary representation — leading zeros included — and changes it from 0 to 1 or from 1 to 0. Return the minimum number of bit flips needed to make start equal to goal.

Inputstart = 10, goal = 7
Output3
In binary, 10 = 1010 and 7 = 0111. The two numbers disagree at bit positions 0, 2, and 3, so three flips are required.

def min_bit_flips(start, goal):
    diff = start ^ goal
    flips = 0
    while diff:
        flips += diff & 1
        diff >>= 1
    return flips
function minBitFlips(start, goal) {
  let diff = start ^ goal;
  let flips = 0;
  while (diff) {
    flips += diff & 1;
    diff >>= 1;
  }
  return flips;
}
int minBitFlips(int start, int goal) {
    int diff = start ^ goal;
    int flips = 0;
    while (diff != 0) {
        flips += diff & 1;
        diff >>= 1;
    }
    return flips;
}
int minBitFlips(int start, int goal) {
    int diff = start ^ goal;
    int flips = 0;
    while (diff) {
        flips += diff & 1;
        diff >>= 1;
    }
    return flips;
}
Time: O(log n) Space: O(1)