一、题目
函数原型:
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 分钟前
SRC 挖洞:WSO2 JWT 算法混淆绕过深度复盘,CVE-2026-5430 不支持的算法怎么变成管理员小O的算法实验室1 小时前
IEEE TEVC,基于精确与DQN群智能调度方法用于多目标异构USV可乐ea2 小时前
AI Agent 工具调用准确性评测:选择错误与参数错误分开测上位机妹子2 小时前
C 语言 数组删除指定元素(快慢指针法)心中有你02142 小时前
【路径规划】A*寻路算法最通俗易懂讲解(C语言完整实现+详细注释)papaofdoudou3 小时前
初中数学-整数整除判定法全解:从 2 到 19 的方法、依据与证明让学习成为一种生活方式3 小时前
啤酒花基因组与重测序--Nature Communicationsl1t3 小时前
DeepSeek总结的OpenZL压缩变换器想吃火锅10053 小时前
【leetcode】238.除了自身以外数组的乘积js坤坤子吖4 小时前
算法学习——高精度加减乘除