规律总结:
把一个整数减去1之后再和原来的整数做位与运算,得到的结果相当于是把整数的二进制表示中最右边的一个1变为0.
题目1:
用一条语句判断一个整数是不是2的整数次方。
解决思路:
如果一个整数是2的整数次方,那么二进制表示中只有一位是1。将这个数减去1之后再与本身,结果为0则表示这个整数位2的整数次方。
bool func(int n) { return ((n-1)&n)==0; }
题目2:
输入两个整数m,n。计算需要改变m的二进制表示中的多少位才能得到n。
思路:
先将m异或n,结果中1的个数即为改变的位数.
int func(int m,int n) { int temp = m^n; int count = 0; while(temp) { count++; temp = (temp-1)&temp; } return count; }
时间: 2025-01-13 23:17:04