1、题目:请编写一个c函数,该函数给出一个字节中被置为1的位的个数
#include <stdio.h>
int int2bin(int num)
{
int i;
int count = 0;
for( i = 0; i < 8; i++)
{
if( num & 1 ==1)
{
count++;
}
num=num >> 1;
}
return count;
}
int main()
{
int num;
int count;
printf("please input a number:");
scanf("%d", &num);
count=int2bin(num);
printf("%d\n",count);
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
2、 题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位.
void int2bin( int num, int p1, int p2)
{
int i;
int bin[32];
for( i = 0; i < 32; i++)
{
if( num & 1 == 1)
{
bin[i] = 1;
}
else
{
bin[i] = 0;
}
num = num >> 1;
}
for( i= p1; i <= p2; i++)
{
printf("%d", bin[i-1]);
}
printf("\n");
}
int main()
{
int num;
int p1;
int p2;
int *p;
printf("please input a number:");
scanf("%d", &num);
printf("please input p1,p2(p1<p2):");
scanf("%d %d", &p1, &p2);
int2bin(num, p1, p2);
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
3、 题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),将该整数的二进制表示方法中从右端开始的p1到p2位取反后输出
void int2bin( int num, int p1, int p2)
{
int i;
int bin[32];
for( i = 0; i < 32; i++)
{
if( num & 1 == 1)
{
bin[i] = 0;
}
else
{
bin[i] = 1;
}
num = num >> 1;
}
for( i= p1; i <= p2; i++)
{
printf("%d", bin[i-1]);
}
printf("\n");
}
int main()
{
int num;
int p1;
int p2;
int *p;
printf("please input a number:");
scanf("%d", &num);
printf("please input p1,p2(p1<p2<32):");
scanf("%d %d", &p1, &p2);
int2bin(num, p1, p2);
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
4、 题目:输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示
#include <stdio.h>
void int2bin( int num, int p, int v)
{
int i;
int bin[32];
for( i = 0; i < 32; i++)
{
if( num & 1 == 1)
{
bin[i] = 1;
}
else
{
bin[i] = 0;
}
num = num >> 1;
}
bin[p-1] = v;
for( i= 31; i >= 0; i--)
{
printf("%d", bin[i]);
if( i % 4 == 0)
{
printf(" ");
}
}
printf("\n");
}
int main()
{
int num;
int p;
int v;
printf("please input a number:");
scanf("%d", &num);
printf("please input p(p<32):");
scanf("%d", &p);
printf("please input v(0|1):");
scanf("%d", &v);
int2bin(num, p, v);
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
5、题目:输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果
提示:0 ^ 0 = 0; 1^ 1 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1;
int int2bin( int a)
{
int i;
int b = 0;
for( i = 0; i < 32; i++)
{
if( i == 0 || i == 31)
{
b = b + (( a >> i) & 1);
}
else
{
b = b +(( ((a >> (i - 1)) & 1) ^((a >> (i + 1)) & 1))<<i);
}
}
return b;
}
int main()
{
int a;
printf("please input a :");
scanf("%d", &a);
printf("%d\n",int2bin(a));
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26