数据结构编程题:请编写算法实现2进制、8进制和10进制数之间的相互转换。

来源:百度知道 编辑:UC知道 时间:2024/05/05 00:53:27

/*利用数据存储结构特点编写,用位运算实现10进制转换8进制和2进制。其他转换楼主可以自己去尝试就不写了*/
#include<stdio.h>
void print(int a,int bit,int scale)/*scale表示进制*/
{
int count,num,add;
switch(scale)
{
case 2:num=1;add=1;break;/*num为每种进制的一位的最大值(如8进制每位是最大值为7),add为每ADD位二进制增量(如8进制则是每3位二进制的组合)同样也可编写4进制,16进制等*/
case 8:num=7;add=3;break;
default:return;
}
count=bit%add;/*初值为最后剩下的多余位数*/
while(count<=bit)
{
putchar('0'+((unsigned)(a&(num<<(bit-count)))>>(bit-count)));
count+=add;
}
printf("\n");
}
main()
{
int a;
clrscr();
printf("input a 10 scale number:");
scanf("%d",&a);
printf("change to 2 scale number:\n");
print(a,sizeof(int)*8,2);/*to 2scale*/
printf("change to 8 scale number:\n");
print(a,sizeof(int)*8,8);/*to 8scale*/
system("pause");
}