How to count the number of bits to be flipped to convert a number to another number in Go

1 Answer

0 votes
package main

import (
	"fmt"
)

func countBits(num1, num2 int) int {
	count := 0

	for num1 > 0 || num2 > 0 {
		lsb1 := num1 & 1
		lsb2 := num2 & 1

		if lsb1 != lsb2 {
			count++
		}

		num1 >>= 1
		num2 >>= 1
	}

	return count
}

func main() {
	num1 := 2  // 00000010
	num2 := 17 // 00010001
	fmt.Println("Number of bits to be flipped:", countBits(num1, num2))

	num1 = 3   // 00000011
	num2 = 221 // 11011101
	fmt.Println("Number of bits to be flipped:", countBits(num1, num2))
}


/*
run:

Number of bits to be flipped: 3
Number of bits to be flipped: 6

*/

 



answered Oct 27, 2024 by avibootz
...