嵌入式AIoT君

我是一名嵌入式-人工智能小白,从入门到出师,开始我的新一段征程。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

进制转换:

 1 //C语言算法:十进制转为二进制
 2 #include<stdio.h>  
 3 int main()  
 4 {  
 5     int b,i,c=0,a[30];  
 6     scanf("%d",&b);  
 7     while(b!=0)  
 8     {  
 9         i=b%2;  
10         a[c]=i;  
11         c++;  
12         b=b/2;  
13     }  
14     c--;//因为c代表存入数据的长度而下表范围是0~c-1  
15     for(;c>=0;c--)//倒序输出即为这个数字对应的二进制  
16     {  
17         printf("%d",a[c]);    
18     }  
19     printf("\n");   
20     return 0;  
21 }  
22 
23 /****************样例二*********************************/
24 # include <stdio.h>
25 
26 int main()
27 {
28     int i, n = 0, b[16];
29     scanf("%d", &i);    //对十进制数的读取
30 
31     for ( ; i; i>>=1)     //把i右移一位 i = i >>1;
32         b[n++] = i&1;
33     for (; n; )
34         printf("%d", b[--n]);   //二进制数一个个输出
35     //  getchar();
36         printf("\n");
37     return 0;
38 }
39 举例:
40     123
41     1111011
42     
43     
44     /********************对十进制数取反***************************/
45         5的二进制是00000101,取反后是11111010,因为%d是按照有符号十进制数字输出,
46     所以会把11111010按照有符号十进制数字处理,根据进制转换的规则对11111010先减一,
47     再取反,得到00000110,即6,但是有符号数中的符号位是1,所以会输出-648     
49     输入一个十进制整数,将他们对应的二进制数的各位反序,形成新的十进制数输出??
50     
51 参考:
52 #include <stdio.h>
53 void main()
54 {
55     int i,j,n;
56     scanf("%d",&n);
57     for(i=n,j=0;i;i/=2)
58         j=j*2+i%2;
59     printf("%d\n",j);
60 }
61 /***********************************/
62 #include <stdio.h>
63 int main()
64 {
65 int m,n=0,p=1;
66 scanf("%d",&m);  
67 for(;m;)
68 {
69 n=(1-m%2)*p+n;
70 m/=2;
71 p*=2
72 }
73 printf("%d\n",n);
74 }
75 /********************************/
76 #include <stdio.h>
77 void main()
78 {
79     int i,n;
80     scanf("%d",&n);  //n大于0
81     for(i=1;i<n;i*=2);
82     i=(i-1)&~n;
83     printf("%d\n",i);
84 }
85 /****************************/

 

posted on 2023-04-10 23:33  孔实  阅读(10)  评论(0编辑  收藏  举报