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;
}
相关推荐
为何创造硅基生物29 分钟前
C 语言 typedef 结构体私有化
c语言·开发语言·算法
yzx99101332 分钟前
递归算法入门:像俄罗斯套娃一样思考
人工智能·算法
心中有国也有家38 分钟前
从零上手 CANN 学习中心:像逛技术便利店一样学昇腾
学习·算法·开源
oo哦哦1 小时前
搜索矩阵系统的最短路密码:用Dijkstra算法和网络流理论,解释为什么你做了1000个关键词,流量还不如别人30个
网络·算法·矩阵
Matlab程序猿小助手1 小时前
【MATLAB源码-第319期】基于matlab的帝王蝶优化算法(MBO)无人机三维路径规划,输出做短路径图和适应度曲线.
开发语言·算法·matlab
图码1 小时前
二分查找进阶:如何在有序数组中快速找到Upper Bound?
数据结构·算法·面试·分类·柔性数组
试剂界的爱马仕1 小时前
《古董局·终局5:潮生》第 2 章:镜子的天赋
大数据·人工智能·算法
Cthy_hy1 小时前
树状数组(BIT)进阶:差分优化实现区间修改、区间查询
数据结构·python·算法
YsyaaabB2 小时前
ACM 模式通用代码模板
java·c++·python·算法
ComputerInBook2 小时前
Euclid 几何变换——仿射(affine)变换
算法·仿射变换·几何变换