题目:
Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation.
Note:
- The given integer is guaranteed to fit within the range of a 32-bit signed integer.
- You could assume no leading zero bit in the integer’s binary representation.
Example 1:
Input: 5 Output: 2 Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.
Example 2:
Input: 1 Output: 0 Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.
题意:
给定一个正整数,求这个正整数的补码。补码,即为该数二进制表示的每位取反后,对应的十进制数。
代码:
public class Solution {public int findComplement(int num) {
int[] arr = new int[33];
int i;
int len = 0;
while( num/2 != 0 ){ //求二进制表示,存在数组arr中
arr[len++] = num%2;
num = num/2;
}
if(arr[len] == 0){ //去掉先导0
if(len == 0){
return 0;
}
else {
len--;
}
}
int res = 0;
for(i=len; i>=0; i--){ //求补码
if(arr[i] == 0){
res = res*2 + 1;
}
else {
res = res*2 + 0;
}
}
return res;
}
}
笔记:
定义整数数组:int[] arr = new int[33];