【leetcode 476】. Number Complement
给定一个正整数,输出其补码。
思路:利用mask掩码进行异或,
利用 temp >> 1 大于0 来决定mask长度,求出的mask 为二进制 1 0 0 0 0类型,
mask -1为 0 1 1 1 1 ,可作为掩码,与num 进行异或。
例如: num = 5
二进制: num: 0 1 0 1
mask : 1 0 0 0
mask-1: 1 1 1
num^(mask-1): 0 1 0
结果以十进制显示为2.
1 public class Solution { 2 public int findComplement(int num) { 3 int mask = 1 , temp = num; 4 while(temp>0){ 5 mask = mask << 1; 6 temp = temp >> 1; 7 } 8 return num^(mask - 1); 9 } 10 }