准备知识
提示:首先,要想了解二进制,就必须先把什么是二进制理解清楚,其次就是了解一些关于二进制的运算符的操作。
提示:本文只对位运算做简单的描述,具体的操作请询问度娘
如果两个相应的二进制形式对应的位数都为1,结果为1,否则为0。
有1为1,否则为0。
相同为0,不同为1。
右边空出的位用0填补高位左移溢出则舍弃该高位
左边空出的位用0或者1填补。正数用0填补,负数用1填补。
正数与右移规则一样,负数的无符号右移,就是相应的补码移位所得,在高位补0即可
如果你看懂了上面的位运算和移位运算,那么接下里的代码就很容易懂了。
publicclassSolution{
// you need to treat n as an unsigned value
public int hammingWeight(intn){
int reslut=0;
while(n!=0){
reslut+=n&1;
n=n>>>1;
}//Of for while
return reslut;
}
}
必须要用强大的数学理论基础,才能将这些题玩的很溜。