返回信息流一直没想明白:
int func(x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}
假定x = 9999。 答案:8
思路:将x转化为2进制,看含有的1的个数。
------------------------
x = x&(x-1); 将x转化为2进制,看含有的1的个数 ???
这是一条镜像帖。来源:北邮人论坛 / cpp / #30481同步于 2009/10/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于x = x&(x-1) 的问题
Wyatt
2009/10/26镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
x=9999=0x270f
x=0x270f x-1=0x270e x&(x-1)=0x270e countx=1
x=0x270e x-1=0x270d x&(x-1)=0x270c countx=2
x=0x270c x-1=0x270b x&(x-1)=0x2708 countx=3
x=0x2708 x-1=0x2707 x&(x-1)=0x2700 countx=4
x=0x2700 x-1=0x26ff x&(x-1)=0x2600 countx=5
x=0x2600 x-1=0x25ff x&(x-1)=0x2400 countx=6
x=0x2400 x-1=0x23ff x&(x-1)=0x2000 countx=7
x=0x2000 x-1=0x1fff x&(x-1)=0x0000 countx=8
understand?
【 在 Wyatt 的大作中提到: 】
: 一直没想明白:
: int func(x)
: {
: ...................