leetcode:476. 数字的补数

一、题目

476. 数字的补数 - 力扣(LeetCode)

函数原型:

int findComplement(int num)
二、思路

将num的每一位取出来,取反后,乘以2的位次方,最终所有结果相加即可得到结果。

++如何取出num的每一位?++

num&1:取出num的最低位

num>>1:num算数右移1,最高位补符号位(由于num为整数,所以最高位补0)

++如何将取出的每一位取反?++

(num&1)^1:按位异或1,如果是0则取反为1,如果是1则取反为0
三、代码

cpp 复制代码
int findComplement(int num) {
    int result=0;
    int i=0;
    while(num)
    {
        result+=pow(2,i)*(num&1^1);
        i++;
        num=num>>1;
    }
    return result;
}
相关推荐
csdn_aspnet5 分钟前
PHP 算法 LeetCode 编号 70 - 爬楼梯
算法·leetcode·php
沈浩(种子思维作者)22 分钟前
没有错误,正确将一文不值
人工智能·python·算法·量子计算
x_xbx23 分钟前
LeetCode:5. 最长回文子串
算法·leetcode·职场和发展
快手技术26 分钟前
免费报名|生成式推荐技术如何实现体系化演进?快手技术沙龙第四期开启!
算法
初夏睡觉27 分钟前
数字截断求和 题解
算法
AZaLEan__28 分钟前
多源 BFS
java·开发语言·算法
smith成长之旅36 分钟前
07 | Mem0 框架分析:三路信号融合——语义 + BM25 + Entity Boost 的混合检索
python·算法
wabs66639 分钟前
关于贪心算法章节的【有两个维度问题】的自我总结
算法·贪心算法
未若君雅裁1 小时前
算法复杂度与数据结构:Java 集合篇的第一块基石
java·数据结构·算法
春日见2 小时前
五分钟入门 强化学习---Q-Learning算法与实现
人工智能·python·深度学习·算法·机器学习·计算机视觉