将十进制数223转换成响应的二进制,八进制和十六进制,并写出详细的转换过程

多谢先~~~

223/2=111余1
111/2=55余1
55/2=27余1
27/2=13余1
13/2=6余1
6/2=3余0
3/2=1余1
1/2=0余1
所以2进制为11011111
换8进制011011111(补足一位最高位0),3位一换011=3,111为7所以8进制为337
也可以同样用223/8取余类转2进制。
换16进制的4位一换1101=D(13),1111=F(15)所以为DF
也可以用类似转2的来做。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-06-18
要是用计算机编程可以直接调用装换函数,要是要写算法就用二进制转换法,八进制只要取二进制的3位,16进制取二进制的4位.
第2个回答  2007-06-23
#include<stdio.h>
void main()
{
int i,j=1;
void ten_two(),ten_eight(),ten_sixteen(),
two_ten(),eight_ten(),sixteen_ten(),p();
do
{
printf("please choose:\n1. 10-->2\n2. 10-->8\n3. 10-->16\n4. 2-->10\n5. 8-->10\n6. 16-->10\n");
scanf("%d",&i);
switch(i)
{
case 1: ten_two();break;
case 2: ten_eight();break;
case 3: ten_sixteen();break;
case 4: two_ten();break;
case 5: eight_ten();break;
case 6: sixteen_ten();break;
default: printf("error\n");j=0;
}
} while(j==0);
}

void ten_two()
{
int a,j=0,two[16];
p();
scanf("%d",&a);
while(a!=0)
{j++;two[j]=a%2;a=a/2;}
for(;j!=0;j--)
printf("%d",two[j]);
putchar('\n');
}

void ten_eight()
{
int a;
p();
scanf("%d",&a);
printf("%o\n",a);
}

void ten_sixteen()
{
int a;
p();
scanf("%d",&a);
printf("%x\n",a);
}

void two_ten()
{
int two[16],j=1,i=1,b=1,k;
long a;
p();
scanf("%d",&a);
for(;a!=0;j++)
{
two[j]=a%10;a=a/10;
}
for(k=1;k<j;k++)
{
a=a+two[k]*b;
b=b*2;
}
printf("%d\n",a);
}

void eight_ten()
{
int a;
p();
scanf("%o",&a);
printf("%d\n",a);
}
void sixteen_ten()
{
int a;
p();
scanf("%x",&a);
printf("%d\n",a);
}

void p()
{printf("please input anumber:\n");}
相似回答