写一个函数返回参数二进制中 1 的个数
程序员文章站
2022-07-15 10:02:18
...
1.写一个函数返回参数二进制中 1 的个数
比如: 15 0000 1111 4 个 1
程序原型:
int count_one_bits(unsigned int value)
{
int count = 0;
int i = 0;
for (i = 0; i < 32; i++)
{
if (((value>>i) & 1) == 1)
{
count++;
}
}
return count;
// 返回 1的位数
}
int count_one_bits_2(unsigned int value)
{
int count = 0;
//奇数的第一位肯定是1
while (value)
{
if (value % 2 == 1)
{
count++;
}
value /= 2;
}
return count;
}
int count_one_bits_3(unsigned int value)
{
}
int main()
{
int n;
printf("请输入一个整数>");
scanf("%d", &n);
get_two(n);
}
2.获取一个数二进制序列中所有的偶数位和奇数位,
分别输出二进制序列。
void print_binary_bit(int value)
{
int i = 0;
int arr1[16] = { 0 };//存放奇数位
int arr2[16] = { 0 };//存放偶数位
for (i = 0; i < 16; i++)
{
if ((value & 1) == 1)
arr1[i] = 1;
value = value >> 1;
if ((value & 1) == 1)
arr2[i] = 1;
value = value >> 1;
}
for (i = 0; i < 16; i++)
{
printf("%d ", arr1[i]);
}
printf("\n");
for (i = 0; i < 16; i++)
{
printf("%d ", arr2[i]);
}
}
void print_binary_bit2(int value)
{
for (int i = 31; i > 0; i -= 2)
{
printf("%d ", (value >> i) & 1);
}
printf("\n");
for (int i = 30; i > 0; i -= 2)
{
printf("%d ", (value >> i) & 1);
}
}
- 输出一个整数的每一二进制位。
void everloc(int value)
{
int arr[32] = { 0 };
int i = 0;
for (i = 0; i < 32; i++)
{
if ((value & 1) == 1)
arr[i] = 1;
value = value >> 1;
}
for (i = 0; i < 32; i++)
{
printf("%d ", arr[i]);
}
}
4.编程实现:
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子 :
1999 2299
输出例子 : 7
int differ(int value1, int value2)
{
int count = 0;
int i = 0;
int value;
value = (value1^value2);
for (i = 0; i < 32; i++)
{
if ((value&1) == 1)
count++;
value = value >> 1;
}
return count;
}
int main()
{
int n,k;
printf("请输入两个整数>");
scanf("%d %d", &n,&k);
printf("%d",differ(n,k));
}
上一篇: JNI学习笔记(一)——C语言基础
下一篇: 写一个函数返回参数二进制中 1 的个数