示例例如,x = 12,y = 15 => 最大数是 15。例如,x = 13,y = 17 => 最小数是 13。解决此问题的方法步骤 1 - 定义方法 findMax 和 findMin,它们接受两个整数 x 和 y。步骤 2 - 根据定义的方法返回整数。示例 在线演示package main import "fmt" func FindMax(x, y int){ fmt.Printf("Maximum element in %d, and %d is: %d", x, y, x - ((x - y) & ((x - y) >> 31))) } func FindMin(x, y int) { fmt.Printf("Minimum element in %d, and %d is: %d", x, y, y ... 阅读更多
示例例如,101、11、11011 和 1001001 设置的位数分别为 2、2、4 和 3。解决此问题的方法步骤 1 - 将数字转换为二进制表示形式。步骤 2 - 计数 1 的个数;返回计数。示例 在线演示package main import ( "fmt" "strconv" ) func NumOfSetBits(n int) int{ count := 0 for n !=0{ count += n &1 n >>= 1 } return count } func main(){ n := 20 fmt.Printf("Binary representation of %d is: %s.", n, strconv.FormatInt(int64(n), 2)) fmt.Printf("The total number of set bits in %d is %d.", n, NumOfSetBits(n)) }输出Binary representation of 20 is: 10100. The total number of set bits in 20 is 2.
示例考虑两个数字 m = 65 => 01000001 和 n = 80 => 01010000翻转的位数为 2。解决此问题的方法步骤 1 - 将两个数字都转换为位。步骤 2 - 统计翻转的位数。示例 在线演示package main import ( "fmt" "strconv" ) func FindBits(x, y int) int{ n := x ^ y count := 0 for ;n!=0; count++{ n = n & (n-1) } return count } func main(){ x := 65 y := 80 fmt.Printf("Binary of %d is: %s.", x, strconv.FormatInt(int64(x), 2)) ... 阅读更多
示例考虑 n = 20(00010100)现在返回 log2(20 & -20) => 2+1 => 3解决此问题的方法步骤 1 - 定义一个方法,其中 n 是参数,返回类型为 int。步骤 2 - 返回 log2(n & -n)+1。示例package main import ( "fmt" "math" "strconv" ) func FindRightMostSetBit(n int) int { if (n & 1) != 0{ return 1 } return int(math.Log2(float64(n & -n))) + 1 } func main(){ var n = 20 fmt.Printf("Binary of %d is: %s.", n, strconv.FormatInt(int64(n), 2)) fmt.Printf("Position of the rightmost set bit of the given number %d is %d.", n, FindRightMostSetBit(n)) }输出Binary of 20 is: 10100. Position of the rightmost set bit of the given number 20 is 3.
示例考虑 n = 16(00010000)现在找到 x = n-1 => 15(00001111) => x & n => 0解决此问题的方法步骤 1 - 定义一个方法,其中 n 是参数,返回类型为 int。步骤 2 - 执行 x = n & n-1。步骤 3 - 如果 x 为 0,则给定数字为 2 的幂;否则不是。示例 在线演示package main import ( "fmt" "strconv" ) func CheckNumberPowerOfTwo(n int) int { return n & (n-1) } func main(){ var n = 16 fmt.Printf("Binary of %d is: %s.", n, strconv.FormatInt(int64(n), 2)) flag := CheckNumberPowerOfTwo(n) ... 阅读更多