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;
}
相关推荐
想带你从多云到转晴5 分钟前
03、数据结构与算法--单向链表
java·数据结构·算法
程序员三藏7 分钟前
接口自动化测试思路和实战:编写线性测试脚本实战
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
mjhcsp9 分钟前
AT_arc205_c [ARC205C] No Collision Moves 题解
开发语言·c++·算法·题解
Yzzz-F10 分钟前
Problem - 1114C - Codeforces[勒让德公式]
算法
热水过敏15 分钟前
前路迷茫,再次起航
笔记·程序人生·职场和发展
木井巳25 分钟前
【笔试强训】Day1
java·算法
leiming627 分钟前
巧用 FreeRTOS 任务通知作“邮箱”:NeoPixel 灯环控制实战
java·前端·算法
老四啊laosi27 分钟前
[双指针] 4. 力扣--盛最多水的容器
算法·leetcode·装水最多的容器
wanderist.29 分钟前
高维矩阵的压维存储和高维差分
c++·算法·蓝桥杯
迈巴赫车主36 分钟前
蓝桥杯192.等差数列java
java·数据结构·算法·职场和发展·蓝桥杯