一、题目
函数原型:
int findComplement(int num)
二、思路将num的每一位取出来,取反后,乘以2的位次方,最终所有结果相加即可得到结果。
++如何取出num的每一位?++
num&1:取出num的最低位
num>>1:num算数右移1,最高位补符号位(由于num为整数,所以最高位补0)
++如何将取出的每一位取反?++
(num&1)^1:按位异或1,如果是0则取反为1,如果是1则取反为0
三、代码
cppint findComplement(int num) { int result=0; int i=0; while(num) { result+=pow(2,i)*(num&1^1); i++; num=num>>1; } return result; }
leetcode:476. 数字的补数
南林yan2023-11-16 17:34
相关推荐
一只幸运猫.17 分钟前
2026Java 后端面试完整版|八股简答 + AI 大模型集成技术(最新趋势)Old Uncle Tom17 分钟前
OpenClaw 记忆系统 -- 记忆预加载会编程的土豆27 分钟前
洛谷题单入门1 顺序结构生信碱移30 分钟前
PACells:这个方法可以鉴定疾病/预后相关的重要细胞亚群,作者提供的代码流程可以学习起来了,甚至兼容转录组与 ATAC 两种数据类型!智者知已应修善业1 小时前
【51单片机中的打飞机设计】2023-8-25圣保罗的大教堂2 小时前
leetcode 1855. 下标对中的最大距离 中等智者知已应修善业3 小时前
【51单片机按键调节占空比3位数码管显示】2023-8-24.5484 小时前
## Sorting(排序算法)wuweijianlove4 小时前
算法的平均复杂度建模与性能回归分析的技术7子琦啊4 小时前
【算法复习】字符串 | 两个底层直觉,吃透高频题