① 十進制轉換成二進制步驟
第一種方法:短除法
例如:將123 轉化為二進制
短除法轉二進制要求對2倒取余,因此轉化為結果為:111011
第二種方法:冪方和
十進制數按照冪方和轉化十進制過程如下:
123 = 1*10^2 + 2*10^1 + 3*10^0
= 100 + 20 + 3
= 123
二進制與十進制類似,轉化十進制過程如下:
1001110 = 1*2^6 + 0*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 0*2^0
= 64 + 0 + 0 + 8 + 4 + 2 + 0
= 78
將上述二進制倒過來就是十進制轉二進制的方法了!
78 = 64 + 14
= 64 + 8 + 6
= 64 + 8 + 4 + 2
= 2^6 + 2^3 + 2^2 + 2^1
= 1001110
將78每次都拆出最接近的2的次方項,直到完全拆完為止,出現的次方項寫為1,沒有出現的寫為0,即為十進制轉二進制的過程,此方法需要注意掌握2的次方項以及快速心算的能力。
② 十進制轉二進製程序
比如10進制的15轉換2進制:
用15除以2,商為7,余數為1,
再用7除以2,商為3,余數為1,
再用3除以2,商為1,余數為1,
再用1除以2,商為0,余數為1,
最後吧余數倒過來排列就為二進制的1111(即商為0時的1,商為1時的1,商為3時的1,商為7時的1)
二進制轉十進制
以二進制的1111轉十進制為例:
把二進制的1111看成是十進制的1111即1*10^3
1*10^2
1*10^1
1
然後把10變成2,即1*2^3
1*2^2
1*2^1
1=15
③ 單片機十進制轉二進制的程序
#include<stdio.h>
#define MAX 32
int main(void)
{
int i=0,n,a[MAX];
printf("請輸入一個十進制整數:\n");
scanf("%d",&n);
while (n>0) //循環過程的始終,判斷n是否能被2除盡
{
a[i] = n%2; //用數組存儲每次除以2之後的余數,即斷定奇偶性,對應二進制位上數值
i = i+1;
n = n/2;
}
printf("十進制整數轉換為二進制數是:\n");
for(; i > 0; i--)
printf("%d",a[i-1]);
printf("\n");
return 0;
}
④ 請用一個很簡單的c語言程序:十進制轉換為二進制。
#include"stdio.h"
intmain()
{
intn;
inti=0,j;
charstr[100]={0};
charoutput[100]={0};
printf("請輸入一個整數:");
scanf("%d",&n);
while(n)
{
str[i]=n%2+'0';
n=n/2;
i++;
}
for(j=0;j<i;j++)
output[j]=str[i-1-j];
printf("該整數的二進製表示為:%s ",output);
}
⑤ C語言十進制轉二進制,程序和流程圖,最好有注釋,謝了!
你趕上好運了,哈哈,我剛也做這個題,剛做好!求採納哦
#include<stdio.h>
#include<stdlib.h>
#define max 100
typedef struct
{
int a[max];
int top;
} sqstack;
void initstack (sqstack *&s)
{
s=(sqstack *)malloc(sizeof(sqstack));
s->top=-1;
}
bool push(sqstack *&s,int e)
{
if(s->top==max-1)
return false;
s->top++;
s->a[s->top]=e;
return true;
}
bool pop(sqstack *&s,int &e)
{
if(s->top== -1)
return false;
e=s->a[s->top];
s->top--;
return true;
}
bool stackemply(sqstack *s)
{
return(s->top==-1);
}
int main()
{
int n,m,e;
sqstack *s;
initstack (s);
printf("輸入一個數:");
scanf("%d",&n);
while(n)
{
m=n%2;
push(s,m);
n=n/2;
}
printf("轉化二進制為:");
while(!stackemply(s))
{
pop(s,e);
printf("%d",e);
}
return 0;
}
⑥ 十進制轉二進制 c語言程序
#include<stdio.h>
#include<stdlib.h>
int
getlen(int
n)
{
if(n==0||n==1)
return
1;
else
return
getlen(n/2)+1;
}
void
main()
{
int
n,t;
int
a
[100];
int
i;
printf("請輸入一個十進制數:\n");
scanf("%d",&n);
t=getlen(n)-1;
for(i=0;i<=t;i++){
a[i]=n%2;
n=n/2;}
printf("對應的二進制數:\n");
for(i--;i>=0;i--)
printf("%ld",a[i]);
system("pause");
}
//修改如上