zoukankan      html  css  js  c++  java
  • Leetcode 476.数字的补数

    数字的补数

    给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。

    注意:

    1. 给定的整数保证在32位带符号整数的范围内。
    2. 你可以假定二进制数不包含前导零位。

    示例 1:

    输入: 5

    输出: 2

    解释: 5的二进制表示为101(没有前导零位),其补数为010。所以你需要输出2。

    示例 2:

    输入: 1

    输出: 0

    解释: 1的二进制表示为1(没有前导零位),其补数为0。所以你需要输出0。

    【思路】

    如果我们能知道该数最高位的1所在的位置,就可以构造一个长度和该数据所占位置一样长的一个掩码mask,然后概述和mask进行异或即可。

     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 }
  • 相关阅读:
    @bzoj
    @hdu
    @noi.ac
    @noi.ac
    @noi.ac
    jsp include page指令标记
    javascript 对象(DOM)document window history
    HTML 标准属性 和 事件属性
    html 特殊字符 fmt table A
    mysql 启动 导入sql文件
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10372441.html
Copyright © 2011-2022 走看看