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;
}
相关推荐
m0_531237171 天前
C语言-数组
c语言·开发语言·算法
啊阿狸不会拉杆1 天前
《计算机视觉:模型、学习和推理》第 4 章-拟合概率模型
人工智能·python·学习·算法·机器学习·计算机视觉·拟合概率模型
ADDDDDD_Trouvaille1 天前
2026.2.20——OJ92-94题
c++·算法
hansang_IR1 天前
【题解】类欧几里得算法
c++·数学·算法·类欧几里得
陈天伟教授1 天前
人工智能应用- 人工智能交叉:06.解析蛋白质宇宙
人工智能·神经网络·算法·机器学习·推荐算法
We་ct1 天前
LeetCode 114. 二叉树展开为链表:详细解题思路与 TS 实现
前端·数据结构·算法·leetcode·链表·typescript
像素猎人1 天前
范围for语法(除for循环/while循环/do...while循环的第四种循环)
数据结构·算法
1 天前
2.20进制转化,表达式求值,删除字符
开发语言·c++·算法
追随者永远是胜利者1 天前
(LeetCode-Hot100)461. 汉明距离
java·算法·leetcode·职场和发展·go
努力学算法的蒟蒻1 天前
day90(2.19)——leetcode面试经典150
算法·leetcode·面试