当前位置:首页 » 编程语言 » 用c语言实现进制转换
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

用c语言实现进制转换

发布时间: 2022-07-17 12:53:50

c语言中怎样调用函数将十进制转换成二进制

1、打开visualC++6.0-文件-新建-文件-C++SourceFile。

② 用c语言编写十进制转化二进制

#include <stdio.h>

void d2n(unsigned long d,int n)

{

if(d>=n)

{

d2n(d/n,n);

}

printf("%c","0123456789ABCDEF"[d%n]);

}

int main()

{

unsigned long d;

int n;

scanf("%lu",&d);

d2n(d,2);

return 0;

}

③ C语言中的进制怎么转换啊

关于进制转换,我觉得挺好玩的不就是几个公式吧了,
就如我第一次所学的二进制转换为十进制,十进制转换为二进制,那样的类型其实也挺有趣的
比如:一个二进制数转化为十进制数,如哦我所给的一个二进制数“101101001”我就设十进制数是Z
首先有个公式可套:Z=1*X8+0*X7+1*X6+1*X5+0*X4+1*X3+0*X2+0*X1+1*X0
把只是X换为2,算出来的就是你所得到的此二进制数所对应的十进制数
同理:如八进制数转换为十进制数就是把X换为8,十六进制数转换十进制数把X换为16,
至于二进制数转化为八进制数更有意思;
首先我引进一个例子:这是一个比较特殊的二进制数:111111111111
首先把这组数按三个数划分一组(从右开始划分):如,111,111,111,111 于是结果是7777
然后就分别把化为各组的数组转化为是进制数,最后进把你刚才算出的数按原来的顺序排起来,于是得到的结果就是你想要的
那十六进制就是把数组中的每四个划分一组(从右开始划分的)
如111111111111划分结果为1111,1111,1111, 方法与上面一样,于是它的结果是fff

关于十进制转化二进制,八进制和十六进制,方法都是一样的
同二进制方法雷同。

④ 如何用C语言将一个十六进制数字转换为十进制

需要准备的材料分别有:电脑、C语言编译器。

1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。

⑤ C语言如何实现十六进制转换成十进制

C语言实现十六进制转换成十进制如下:

例如将十六进制数字 9FA8C 转换成十进制

9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十进制)。

从右往左看,第1位的位权为 160=1,第2位的位权为 161=16,第3位的位权为 162=256,第4位的位权为 163=4096,第5位的位权为 164=65536 …… 第n位的位权就为 16n-1。

将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方。

所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。

再例如:十六进制:EA7 = 14×162 + 10×161 + 7×160 = 3751(十进制)。



(5)用c语言实现进制转换扩展阅读:

C语言10进制转16进制

把十进制的数不停除以16的余数按从右到左的顺序排起来就是16进制,例如:55/16=0余5例如100 100/16=6余4 6/16余6,所以就是64,再例如1000 1000/16=62余8 62/16=3余12 3/16余3所以结果是3C8 //。

对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。

对于小数部分,采用连续乘以基数2,并依次取出的整数部分,直至结果的小数部分为0为止。

⑥ C语言中如何用算法实现进制间的转化

C语言中实现10进制转换为任意进制的过程为:

  • 定义数组int rs[32],保存转换后的数据,整数的转换结果最多32位(4字节*8位)

  • 定义一个数组char map[]={'0','1','2','3',...,'9','A','B',...'F'},完成相应数值对应的转换后的字符

  • 输入10进制数(整数)num

  • 转入转换进制基数(2-16)ind

  • 循环对num进行模ind运算,得到余数存储到数组rs中

  • num缩小ind倍

  • 当num为0时结束循环

  • 反向输出数组rs中对应的各元素对应的map字符,得到转换结果

参考代码:

#include<stdio.h>
intmain()
{
charmap[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
inti,c[32],num,ind;
do{printf("inputnum:");scanf("%d",&num);}while(num<0);
do{printf("inputind:");scanf("%d",&ind);}while(ind>16||ind<2);
i=0;
do{
c[i++]=num%ind;
num/=ind;
}while(num!=0);
for(i--;i>=0;i--)
printf("%c",map[c[i]]);
printf(" ");
return0;
}

运行结果:

input num: 100

input ind: 2

1100100


input num: 100

input ind: 8

144


input num: 100

input ind: 16

64

⑦ C语言中进制如何转换

#include
<stdio.h>
int
main(void)
{
int
a8,
b10,
c16;/*a8,b10,c16分别代表八进制数,十进制数和十六进制数*/
scanf("%o%d%x",
&a8,
&b10,
&c16);
printf("%o,%d,%x\n",
a8,a8,a8);
printf("%o,%d,%x\n",
b10,b10,b10);
printf("%o,%d,%x\n",
c16,c16,c16);
}
要重复,添加循环就OK了。
这里简单的实现你的输入和输出功能,并没有真正从运算规则上去进行转换,你也没做这样的要求,不知道是不是你想要的结果。

⑧ C语言进制转换

支持zpfloveyfy的分析,程序风格也很好。
我在这给个数制转换的公式:
十进制数N和其他d进制数的转换基于以下公式:
N
=
(N
div
d)
*
d
+
N
mod
d;
其中:div为整除,mod为求余。
例如将10进制1348转化成2504,运算过程如下:
N
Ndiv8
Nmod8
1348
168
4
168
21
0
21
2
5
2
0
2
看起来有点乱,因为这里会把原来的格式给打乱。
由最后一列4052可以看出,正好是结果2504的倒数,所以用栈来实现它是最理想不过的了。