//1.写一个函数返回参数二进制中 1 的个数
#include<stdio.h>
int div = 0; //除数
int rem = 0; //余数
int count = 0; //计1
int count_one_bits(unsigned int div)
{
int con = 0; //商
while (div >= 1)
{
con = div / 2;
rem = div % 2;
div = con;
if (1 == rem)
{
++count;
}
}
return 0;
}
int main()
{
printf("请输入一个数字");
scanf("%d", &div);
count_one_bits(div);
printf("%d", count);
return 0;
}
//2.获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
int num = 0;
int arr1[16] = { 0 };
int arr2[16] = { 0 };
printf("请输入一个数字:\n");
scanf("%d", &num);
for (i = 0, j = 0; j < 32; ++i, j += 2)
{
arr1[15 - j / 2] = (num >> j) & 1;
arr2[15 - i] = (num >> (2 * i + 1)) & 1;
}
printf("%d对应二进制的偶数位分别是:\n", num);
for (i = 0; i < 16; i++)
{
printf("%d", arr1[i]);
}
printf("\n");
printf("%d对应二进制的奇数位分别是:\n", num);
for (i = 0; i < 16; i++)
{
printf("%d", arr2[i]);
}
printf("\n");
return 0;
}
//3. 输出一个整数的每一位
#include<stdio.h>
int main()
{
int i = 0;
int num = 0;
int arr[32] = { 0 };
printf("请输入一个整数:\n");
scanf("%d", &num);
for (i = 0; i < 32; ++i)
{
arr[31 - i] = (num >> i) & 1;
}
printf("%d对应的二进制数字是:", num);
for (int i = 0; i < 32; ++i)
{
printf("%d", arr[i]);
}
printf("\n");
return 0;
}
//4.编程实现:
//两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
//输入例子 :
//1999 2299
//输出例子 : 7
int main()
{
int m = 0;
int n = 0;
int temp = 0;
int count = 0;
printf("请分别输入两个整数m,n\n");
scanf("%d%d", &m, &n);
temp = m ^ n;
int i = 0;
for (i = 0; i < 32; ++i)
{
if ((temp >> i) & 1)
++count;
}
printf("%d和%d二进制表达式中有%d位不同\n", m, n, count);
return 0;
}
二进制逻辑运算符有关练习题
最新推荐文章于 2024-06-29 15:56:58 发布