第一题:剑指 Offer 15. 二进制中1的个数
问题描述
思路
java中有个一下可以计算的函数在下面代码中展示
还有就是通过 n & 1的值来求1的个数
用count来计数。
代码
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int count=0;
while(n != 0){
count += n & 1 ;
n = n >>> 1;
}
return count;
}
}
Integer.bitCount(n)
用法就是将n的值转换为二进制然后求1的个数。
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
return Integer.bitCount(n);
}
}
第二题:剑指 Offer 65. 不用加减乘除做加法
问题描述
思路
利用位运算来实现加法;
a & 1 表示a最末尾和1 进行与运算,也就是都为一才为一,可用于进位。
a = a ^ b表示与运算计算的和。
代码
class Solution {
public int add(int a, int b) {
while(b != 0){
int c =(a & b) << 1;
a = a ^ b;
b = c;
}
return a;
}
}