① 十进制转换成二进制步骤
第一种方法:短除法
例如:将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");
}
//修改如上