获取一个数二进制序列中所有的偶数位和奇数位

思路:要判断一个整数的二进制偶数位是0还是1,则可以用这个整数和1或2进行&的用算,之后进行右移在进行&的用算,直到右移为0结束。

可以利用这种方法提取二进制数。

 

 1 #include<stdio.h>
 2 #define _CRT_SECURE_NO_WARNINGS
 3 
 4 void Find_even(int a)
 5 {
 6     //int c;
 7     //int a = 11;//0000 1011
 8     //int b = 12;//0000 1100
 9     //          36          0010 0100
10     ////      2    0000 0010
11     //c = a >> 2;
12     //printf("%d\n",c);
13     //获取偶数位:
14     printf("二进制中的偶数位序列为:\n");
15     int i = 32;
16     while(i>0)
17     {
18         i = i - 2;
19         int b = 0;
20         b = a >> i;
21         if ((b & 2) == 2)
22         {
23             printf("1");
24         }
25         else
26         {    
27             printf("0");
28         }
29     }
30     printf("\n");
31 }
32 
33 void Find_odd(int a)
34 {
35     //int c;
36     //int a = 11;//0000 1011
37     //int b = 12;//0000 1100
38     //          36   0010 0100
39     ////      1    0000 0001
40     //c = a >> 2;
41     //printf("%d\n",c);
42     //获取偶数位:
43     printf("二进制中的奇数位序列为:\n");
44     int i = 32;
45     while (i>0)
46     {
47         i = i - 2;
48         int b = 0;
49         b=a >> i;
50         if ((b & 1) == 1)
51         {
52             printf("1");
53         }
54         else
55         {
56             printf("0");
57         }
58     }
59     printf("\n");
60 }
61 
62 int main()
63 {
64     int a;
65        printf("请输入一个整数:\n");
66     scanf("%d",&a);
67     Find_even(a);
68     Find_odd(a);
69 
70     return 0;
71 }

 

posted on 2019-02-11 10:00  The_Ocean  阅读(743)  评论(0编辑  收藏  举报

导航