十进制数
转换成
二进制数
输出
#include
//
头文件
void
main()
{
int
a,b[10],c,i=0
//
a存储待转换的十进制数,b[10]存储转换后的二进制位,
//
c
是存储
,
printf("输入一个整数\n")
scanf("%d",&a)
//
输入需转换的十进制数
while(a!=0)
//
只要a不为零,就继续转换
{
c=a%2
//
把a除以2
的余数赋值给c
a=a/2
//
把商存入a进行下一次循环
b[i]=c
//
把余数存到数组中作为二进制中的一位
i++
}
for(i>0i--)
printf("%d",
b[i-1])
//反向输出余数,即得到二进制
例如输入4
因为4
!=
0
4
/
2
=
2((商=a)...........0(余数=c=b[0])
因为2
!=
0
2
/
2
=
1((商=a)...........0(余数=c=b[1])
因为1
!=
0
1
/
2
=
0((商=a)...........1(余数=c=b[2])
因为
0
=
0
结束循环输出
b[2]
b[1]
b[0]
即
100,也就是二进制的
4
设R0=20H,R1=25H,(20H)=70H,(21H)=80H,(22H)=A0H,(22H)=A0H,(25H)=A0H(26H)=6FH,(27H)=76H,下列程序执行后,CLR C CY=0
MOV R2,#3 R2=03H R2=02HR2=01H
LOOP:
MOV A,@R0 A=70H A=80H A=A0H
ADDC A,@R1CY=1,A=10H CY=0,A=F0HCY=1,A=16H
MOV @R0,A (20H)=10H (21H)=F0H (22H)=16H
INCR0 R0=21H R0=22HR0=23H
INCR1 R1=26H R1=27HR1=28H
DJNZ R2,LOOP
JNCNEXT
MOV @R0,#01H 23H=01H
SJMP $
NEXT: DECR0
SJMP $
结果:(20H)=10H ,(21H)=F0H ,(22H)=16H ,(23H)=01H ,(A)=16H ,(CY)=1 .
分析过程参照注释
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)