给定一个正整数,输出其补码。

思路:利用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

   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 }

 

相关文章:

  • 2021-11-30
  • 2022-12-23
  • 2021-06-02
  • 2021-05-17
  • 2021-08-23
猜你喜欢
  • 2021-05-19
  • 2022-02-07
  • 2022-12-23
  • 2022-12-23
  • 2021-10-26
相关资源
相似解决方案