476. 数字的补数

对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数。

例如,整数 5 的二进制表示是 "101" ,取反后得到 "010" ,再转回十进制表示得到补数 2 。
给你一个整数 num ,输出它的补数。

示例 1:

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


示例 2:

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

提示:

1 <= num < 231

 /***
 ​
  *** *@**param* *{number}* *num*
 ​
  *** *@**return* *{number}*
 ​
  **/*
 ​
 var findComplement = function(num) {
 ​
   var ans = num;
 ​
   var i = 1;
 ​
   while(num != 0){
 //对num挨个取反
     ans ^= i;
 //右移 让num少一位数
     num >>= 1;
 //i左移 换位数
    i <<= 1; 
 ​
   }
 ​
   return ans;
 ​
 };

参考:LeetCode上面Tim这个人

对二进制的种种还不熟悉,接下来会努力的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值