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;
}
相关推荐
LCG元14 小时前
电机控制进阶:STM32F303硬件比较器实现FOC算法解析
stm32·嵌入式硬件·算法
丰海洋14 小时前
Leetcode-hot100-136只出现一次的数字
算法·leetcode·职场和发展
We་ct14 小时前
LeetCode 124. 二叉树中的最大路径和:刷题解析
前端·数据结构·算法·leetcode·typescript
Anastasiozzzz16 小时前
MySQL JOIN:底层原理、算法演进与多表性能之谜
算法
追随者永远是胜利者1 天前
(LeetCode-Hot100)253. 会议室 II
java·算法·leetcode·go
Jason_Honey21 天前
【平安Agent算法岗面试-二面】
人工智能·算法·面试
程序员酥皮蛋1 天前
hot 100 第三十五题 35.二叉树的中序遍历
数据结构·算法·leetcode
追随者永远是胜利者1 天前
(LeetCode-Hot100)207. 课程表
java·算法·leetcode·go
香芋Yu1 天前
【大模型面试突击】08_推理范式与思维链
面试·职场和发展
仰泳的熊猫1 天前
题目1535:蓝桥杯算法提高VIP-最小乘积(提高型)
数据结构·c++·算法·蓝桥杯