1.计算一个数的二进制中1的个数代码。
2.计算2个数中二进制位上相同位都有1的个数。
3.打印出二进制位上奇偶位置上的0与1。
一、计算一个数的二进制中1的个数代码
//算补码中1的个数
count_number_of_1(unsigned int m)
{
int c = 0;
while (m)
{
if (m % 2 == 1)
{
c++;
}
m /= 2;
}
return c;
}
int main()
{
int n = -1;
int ret = count_number_of_1(n);
printf("%d\n", ret);
return 0;
}
二、计算2个数中二进制位上相同位都有1的个数
1.
int count_diff_bit(int m, int n)
{
int i = 0;
int c = 0;//计数器
for (i = 0; i < 32; i++)
{
if ((m & 1) != (n & 1))
{
c++;
}
m >>= 1;
n >>= 1;
}
return c;
}
int main()
{
int m = 1999;
int n = 2299;
int ret = count_diff_bit(m , n);
printf("%d\n", ret);
return 0;
}
2.
int count_diff_bit(int x, int y)
{
int i = 0;
int c = 0;//计数器
int w = x ^ y;
while (w)
{
w = w & (w - 1);
c++;
}
return c;
}
int main()
{
int m = 1999;
int n = 2299;
int ret = count_diff_bit(m, n);
printf("%d\n", ret);
return 0;
}
3.打印二进制中奇数位与偶数位
void print(int m)
{
int i = 0;
//打印偶数
for (i = 30; i >= 0; i -= 2)
{
printf("%d", (m >> i) & 1);
}
printf("\n");
//打印奇数
for (i = 31; i >= 1; i -= 2)
{
printf("%d", (m >> i) & 1);
}
}
int main()
{
int m = 0;
scanf("%d", &m);
print(m);
return 0;
}
总结
以上就是今天要讲的内容,本文仅仅简单说明如何去处理数的二进制问题。