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;
}
相关推荐
EdmundXjs6 小时前
大模型核心概念解读
人工智能·算法
lookaroundd6 小时前
llm-compressor 普通量化调用链分析
python·算法
中小企业实战军师刘孙亮6 小时前
家居建材营销新趋势:数字化、体验式与可持续方向-佛山鼎策创局破局增长咨询有限公司
职场和发展·产品运营·创业创新·需求分析·学习方法
小羊在睡觉6 小时前
力扣239. 滑动窗口最大值
数据结构·后端·算法·leetcode·go
兰令水6 小时前
topcode【随机算法题】【2026.5.20打卡-java版本】
java·开发语言·算法
此生决int7 小时前
算法从入门到精通——前缀和
c++·算法·蓝桥杯
凯瑟琳.奥古斯特7 小时前
传输层核心功能解析
开发语言·网络·职场和发展
大大杰哥7 小时前
leetcode hot100(4)矩阵
算法·leetcode·矩阵
小白|7 小时前
cmake:昇腾CANN构建系统完全指南
java·c++·算法
nebula-AI7 小时前
人工智能导论:模型与算法(未来发展与趋势)
人工智能·神经网络·算法·机器学习·量子计算·automl·类脑计算