今日学习任务
|
|
今日任务完成情况 | 任务1、2都已完成 |
今日开发中出现的问题汇总
|
|
今日未解决问题 | 无 |
今日开发收获 | 1、了解了进程的虚拟地址空间; 2、对自增自减运算及位运算更加熟练。 |
自我评价
|
|
其他
| 无 |
1、编写一个c函数,该函数给出了一个整数中被置1的位的个数
1 #include <stdio.h>
2
3 int count_1(int num)
4 {
5 int i;
6 int count = 0;
7
8 for(i = 0; i < 32; i ++)
9 {
10 if((num & 1) == 1)
11 {
12 count ++;
13 }
14 num = num >> 1;
15 }
16
17 printf("The number of 1 is:\n");
18 printf("%d\n",count);
19 }
20
21 int main()
22 {
23 int num;
24
25 printf("Please input a number:\n");
26 scanf("%d",&num);
27
28 count_1(num);
29
30 return 0;
31 }
运行结果:
:Please input a number:
15
The number of 1 is:
4
2、输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位。
1 #include <stdio.h>
2
3 int retain(int num)
4 {
5 int i;
6 unsigned int mask = 0x80000000;
7
8 for(i = 0; i < 32; i ++)
9 {
10 if((num & mask) == mask)
11 {
12 printf("1");
13 }
14 else
15 {
16 printf("0");
17 }
18
19 if((i + 1) % 4 == 0)
20 {
21 printf(" ");
22 }
23 num = num << 1;
24 }
25 printf("\n");
26 }
27
28 int main()
29 {
30 int p1;
31 int p2;
32 int num;
33 unsigned int mask = 0xffffffff;
34
35 printf("Please input a number:\n");
36 scanf("%d",&num);
37 printf("Please intpu the range:\n");
38 scanf("%d",&p1);
39 scanf("%d",&p2);
40
41 printf("The changed bit number:\n");
42 mask = (mask >> (32 - (p2 - p1 + 1))) << p1;
43 num = num & mask;
44 retain(num);
45
46 return 0;
47 }
运行结果:
Please input a number:
16
Please intpu the range:
4 11
The changed bit number:
0000 0000 0000 0000 0000 0000 0001 0000
3、输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果。
1 #include <stdio.h>
2
3 int func(int num)
4 {
5 int i;
6 int a[32];
7 int b[32];
8
9 for(i = 31; i >= 0; i --)
10 {
11 if((num & 1) == 1)
12 {
13 a[i] = 1;
14 }
15 else
16 {
17 a[i] = 0;
18 }
19 num = num >> 1;
20 }
21
22 i = 1;
23 b[0] = a[0];
24 b[31] = a[31];
25 for(i = 1; i < 31; i ++)
26 {
27 b[i] = a[i - 1] ^ a[i + 1];
28 }
29
30 i = 0;
31 printf("a:\n");
32 for(i = 0;i < 32; i ++)
33 {
34 if(i % 4 == 0)
35 {
36 printf(" ");
37 }
38 printf("%d",a[i]);
39 }
40 printf("\n");
41
42 i = 0;
43 printf("b:\n");
44 for(i = 0; i < 32; i ++)
45 {
46 if(i % 4 == 0)
47 {
48 printf(" ");
49 }
50 printf("%d",b[i]);
51 }
52 printf("\n");
53 }
54
55 int main()
56 {
57 int num;
58
59 printf("Please input a number:\n");
60 scanf("%d",&num);
61
62 func(num);
63
64 return 0;
65 }
运行结果:
Please input a number:
8
a:
0000 0000 0000 0000 0000 0000 0000 1000
b:
0000 0000 0000 0000 0000 0000 0001 0100