一、题目
函数原型:
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
相关推荐
Black蜡笔小新1 小时前
自动化AI算法训练服务器DLTM制造业AI质检工作站助力制造业实现AI智检嵌入式小能手1 小时前
飞凌嵌入式ElfBoard-进程间的通信之命名管道啦哈拉哈2 小时前
Leetcode题解记录-hot100(81-100)csdn_aspnet2 小时前
Java 霍尔分区算法(Hoare‘s Partition Algorithm)诸葛务农2 小时前
道路行驶条件下电动汽车永磁电机的有效使用寿命及永磁体的失效和回收再利用(下)snow@li2 小时前
AI:理解 大数据、算法、算力、电力、生成式AI、token 之间的关系小智老师PMP2 小时前
零基础能不能考PMP?零基础专属学习路径+全套扶持体系Dillon Dong3 小时前
【风电控制】FPGA采集Vdc的ADC增益系数解析——从数字码到实际电压的桥梁TDengine (老段)3 小时前
TDengine 压缩编码机制 — 双层压缩架构与类型特化算法妄想出头的工业炼药师4 小时前
LVIO鲁棒