2021年9月13日00:02:54
原码
反码
补码
public class Solution {
public int NumberOf1(int n) {
if(n ==0) return 0;
int num = 0;
if(n > 0 ){
while(n >0){
if(n%2 == 1) num++;
n = n/2;
}
}
else{
int[] nums = new int[32];
n = -n;
int k = 31;
nums[0] = 1;
while(n>0){
nums[k] = n%2;
n = n/2;
k--;
}
for(int i=31; i>0;i--){
if(nums[i] == 0) nums[i] = 1;
else nums[i] = 0;
}
nums[31]++;
int jin = 0;
for(int i=31; i>0;i--){
nums[i] = nums[i] + jin;
if(nums[i]>1) {nums[i] = 0;jin = 1;}
else jin = 0;
}
for(int i=31; i>=0;i--){
if(nums[i] == 1) num ++;
}
}
return num;
}
}


京公网安备 11010502036488号