//不允许创建临时变量,交换两个整数的内容
int main() {
int a = 0;
int b = 0;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d %d\n", a, b);
return 0;
}
//⽅法1:
int main9()
{
int num = 10;
int count = 0;//计数
while (num)
{
if (num % 2 == 1)
count++;
num = num / 2;
}
printf("2进制中1的个数 = %d\n", count);
return 0;
}
//⽅法2:
int main8()
{
int num = -1;
int i = 0;
int count = 0;//计数
for (i = 0; i < 32; i++)
{
if (num & (1 << i))
count++;
}
printf("2进制中1的个数 = %d\n", count);
return 0;
}
//⽅法3:
int main()
{
int num = -1;
int i = 0;
int count = 0;//计数
while (num)
{
count++;
num = num & (num - 1);
}
printf("2进制中1的个数 = %d\n", count);
return 0;
}
//打印整数二进制的奇数位和偶数位
int main() {
int n = 0;
scanf("%d", &n);
int i = 0;
//偶数位
for (i = 31; i >= 1; i -= 2) {
int j = (n >> i) & 1;
printf("%d", j);
}
printf("\n");
//奇数位
for (i = 30; i >= 0; i -= 2) {
int j = (n >> i) & 1;
printf("%d", j);
}
printf("\n");
return 0;
}
//两个整数二进制位不同个数
int main() {
int a, b;
while (scanf("%d %d", &a, &b) != EOF) { // 注意 while 处理多个 case
// 64 位输出请用 printf("%lld") to
int count = 0;
int i = 0;
for (i = 0; i < 32; i++) {
if ((a & 1) != (b & 1)) {
count++;
}
a = a >> 1;
b = b >> 1;
}
printf("%d\n", count);
}
return 0;
}