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; } }