当前位置:网站首页>位运算例题(待续)

位运算例题(待续)

2022-06-12 15:39:00 General_zy

基本原理

0s 表示一串 0,1s 表示一串 1。

x ^ 0s = x      x & 0s = 0      x | 0s = x
x ^ 1s = ~x     x & 1s = x      x | 1s = 1s
x ^ x = 0       x & x = x       x | x = x

位 1 的个数

  1. 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。
  2. 输入必须是长度为 32 的 二进制串 。

循环每一位

func hammingWeight(num uint32) int {
    
	count :=0
	for i:=0;i<32;i++{
    
		// 此处结果为uint32要转为int
		count+= int((num>>i)&1)
	}
	return count
}

位运算性质

对于整数 n,n & (n−1) 的结果为将 n 的二进制表示的最后一个 1 变成 0。

func hammingWeight(num uint32) int {
    
	count :=0
	for num!=0{
    
		num=num&(num-1)
		count++
	}
	return count
}

待续

原网站

版权声明
本文为[General_zy]所创,转载请带上原文链接,感谢
https://blog.csdn.net/General_zy/article/details/125193633