【算法】位运算之补数
题目描述:
题解:先找出num的二进制有多少位,然后将1左移n位再减1得到全1二进制;
例如:5(101)有3位,1<<3 -1= 111,再将5(101)与7(111)异或得到2(010),即补数。
Java代码:
class Solution { public int findComplement(int num) { int bitwei = 0,num1 = num; while(num1>0){ bitwei++; num1 /= 2; }//统计num 的位数 //将1左移bitwei位,例如1<<3 = (1000) (1000)-1 = (111) int mark = (1<<bitwei) - 1; //将5(101)与7(111)异或得2(010) return num ^ mark; } }
本文来自博客园,作者:小李不背锅,转载请注明原文链接:https://www.cnblogs.com/lishilin-glut/p/16496145.html