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

 

posted @ 2017-04-06 00:09  Yaaaaa  阅读(159)  评论(0编辑  收藏  举报