本文主要是介绍476. Number Complement(数字的补数),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述
对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数。
例如,整数 5 的二进制表示是 “101” ,取反后得到 “010” ,再转回十进制表示得到补数 2 。
给你一个整数 num ,输出它的补数。
问题分析
以5为例,采用异或操作用原数5异或上"111"就能得到相应的补数,由此我们可以知道整个问题就是让原数的二进制数码异或上一个与原数的二进制数码一样长度的全1二进制数码。
代码
int findComplement(int num) {int n = num;int count = 0;while(n!=0){n/=2;count=(count<<1)+1;}count = ~count;return ~(num^count);
}
提交结果截图
这篇关于476. Number Complement(数字的补数)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!