位运算

位运算,第1张

位运算

lowbit运算 O(nlogn)
返回最低位的 1 1 1
原理
计算机中一个数的负数就是这个数的补码(取反 + 1 +1 +1)
比如原码为: 10001000 10001000 10001000
则反码为: 011101111 011101111 011101111
补码为: 011110000 011110000 011110000
原码与补码按位异或就可以得到最低位的 1 1 1
即 1000 1000 1000

int lowbit(int x)
{
	return x & -x;
}

枚举 O(nlogn)
对于每个数字a,a&1得到了该数字的最后一位,之后将a右移一位,直到位0,就得到了1的个数

例题:https://www.acwing.com/problem/content/803/
例题:https://www.acwing.com/problem/content/97/

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/3970366.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-21
下一篇 2022-10-21

发表评论

登录后才能评论

评论列表(0条)

保存