(c语言)十进制转换二,八,十六进制
十进制转换
代码转换为其原码
若为负数,请自行转换其补码;
(16进制,自行查取ABC…F)
代码如下:
#include<stdio.h>
#include <math.h>
void aj(int b,int n);
void ab();
void aj2(float i,int n);
int s[32];
int main(){
float a1,a2;
int b,n;
printf("最大范围为2的32次方");
while(1){
printf("\n输入十进制数:");
scanf("%f",&a1);
printf("输入转换的进制数");
scanf("%d",&n);
b=a1;//正数
a2=a1-b;
printf("整数部分的原码为:");
aj(b,n);
printf("小数部分的原码为:");
aj2(a2,n);
}
}
void aj(int b,int n){
int i=0;
if(b>0){
while(i<32){
s[i++]=b%n;//转换
b=b/n;
}
}
else{
b=fabs(b);
while(i<31){
s[i++]=b%n;
b=b/n;
}
s[31]=1;
}
ab();
}
void ab(){
int m=31;
while(m>=0){
printf("%d",s[m--]);//倒序
}printf("\n");
}
void aj2(float a2,int n){
int i=0,j;
int l[4];
while(i<4){
l[i]=j=a2*n;//小数转换
a2=a2*n-j;
printf("%d",l[i]);
i++;}
}
写的些许糙,勿喷。。。。。
还没有评论,来说两句吧...