36进制算法
A. 十进制数36用34进制算法是不是等于12
没错,计算正确
B. 所有进制的算法
#include <stdio.h>void a();void b();void c();void main(){ int s; do { printf("0.退出\n1.十进制~二进制\n2.十进制~八进制\n3.十进制~十六进制\n请选择:"); scanf("%d",&s); if(s==0) { break; } switch(s) { case 1: a();break; case 2: b();break; case 3: c();break; default:printf("输入有误!请输入0~4之间的数\n");break; } }while(1);}void a(){ int num,p[100],n=0,i; printf("请输入一个十进制整数:"); scanf("%d",&num); while(num!=0) { p[n]=num%2; num/=2; n++; } for(i=n-1;i>=0;i--) { printf("%d",p[i]); } printf("\n");}void b(){ int num,p[100],n=0,i; printf("请输入一个十进制整数:"); scanf("%d",&num); while(num!=0) { p[n]=num%8; num/=8; n++; } for(i=n-1;i>=0;i--) { printf("%d",p[i]); } printf("\n");}void c(){ int num,p[100],n=0,i; printf("请输入一个十进制整数:"); scanf("%d",&num); while(num!=0) { p[n]=num%16; num/=16; n++; } for(i=n-1;i>=0;i--) { if(p[i]<10) { printf("%d",p[i]); } else { switch(p[i]) { case 10: printf("A"); break; case 11: printf("B"); break; case 12: printf("C"); break; case 13: printf("D"); break; case 14: printf("E"); break; case 15: printf("F"); break; } } } printf("\n");} 答案补充 10进制数转化成R进制数就是不断地 取余、整除,最后把所有余倒序排列 比如:6转化成2进制数的步骤是,6取2的余是0,整除得3,3取2的余是1,整除得1,1取2的余是1,整除2得0,计算结束,再把所有余倒序排列,即110。
其它进制也是同样的道理,如果进制大于10,就要用ABCD来分别表示10进制中的(10、11、12、13、14),可以去查询下权的概念
C. 怎么样算一个数的二进制比如说,36的二进制是多少怎么算的
首先思考一下是十进制,比如365=3*10^2+6*10^1+5*10^0
这样你会发现一个规律,十进制转换=当前位的数*10^(位数-1)之和
这样你再去理解二进制,其实二进制就是将10这个量值换成2,去计算得出最终的结果,为什么称为二进制,当然是由于 每个位的数最大只能是1,逢二进一,就像十进制,逢十进一。
那么我们就来分析一下36怎么转换为二进制?
首先算一下2的1-10次方为多少
2^0=1 2^1=2 2^2=4 2^3=8 2^4=16 2^5=32
2^6=64 2^7=128 2^8=256 2^9=512 2^10=1024
第二步
36=32+4=2^5*1+2^4*0+2^3*0+2^2*1+2^1*0+2^0*0
所以转化为2进制 就是100100
第三步
运用更好的方法获取二进制
辗转相除法
将值除以2,记下余数。
只要所得的商不为0,继续将最新的商除以2,并记下余数。
商为0时,将余数按照记录的顺序从下往上依次排列,即可得到该数的二进制。
这样就获取48的二进制位110000
48=32+16=2^5*1+2^4*1+2^3*0+2^2*0+2^1*0+2^0*0
D. 如何将十进制数36转换成二进制数
这个是有一个很简单的算法了,十进制转为二、八、十六进制的时候,用的是除法取余
比如36
就拿36除以2
首先36/2...得18余0
其次18/2...得9余0
再次9/2...得4余1
跟着4/2...得2余0
还有2/2...得1余0
最后1/2...得0余1
然后由下面的余数往上排,结果就是100100
其他的数字也可以用上面的方法
只要学会了,就不怕任何数的转换,下面介绍一下转八,十六进制的方法
36为例
36/8...得4余4
4/8...得0余4 由下往上排,结果就是(44)8
验证:4*8^1+4*8^0=32+4=36
36/16...得2余4
2/16...得0余2 结果就是(24)16
验证:2*16^1+4*16^0=32+4=36
这种方法基本可以将任何十进制数,任意转为二、八、十六进制.
E. 在PASCAL下 如何将36进制数化为10进制数(请提供算法)
输入:
输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A~F表示数码10~15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。
输出:
输出仅一行,包含一个正整数,表示转换之后的m进制数。
样例:
change.in
16
FF
2
change.out
11111111
program asdf;
var
n,m,h,i:integer;
f:longint;
s:string;
a:array[1..2000]of char;
function fj(d:string):longint;
var
i,j,k:integer;
begin
fj:=0;
for i:=1 to length(d) do
begin
k:=1;
for j:=1 to length(d)-i do k:=k*n;
if (n<=10)or((d[i]>='0')and(d[i]<='10'))
then k:=k*(ord(d[i])-ord('0'))
else k:=k*(ord(d[i])-ord('A'));
fj:=fj+k;
end;
end;
procere fd(t:longint);
var
i:integer;
begin
h:=2001;
while t>0 do
begin
i:=t mod m;
dec(h);
if i<10 then a[h]:=chr(ord('0')+i)
else a[h]:=chr(ord('A')+i-10);
t:=t div m;
end;
end;
begin
assign(input,'change.in');
assign(output,'change.out');
reset(input);
rewrite(output);
readln(n);
readln(s);
readln(m);
f:=fj(s);
fd(f);
for i:=h to 2000 do
write(a[i]);
writeln;
close(input);
close(output);
end.
F. 如何用C语言做36以内的进制转换
main()
{ int a,b,k=0,s[99];
scanf("%d%d",&a,&b);
for(;a!=0;a/=b)
{k++;s[k]=a%b;}
for(;k>=1;k--)
printf("%d,",s[k]); /*转换后的数字每一位用‘,’隔开*/
getchar();
}
G. 求将一串十进制数字转成三十六进制的规则算法
十进制转换为r进制的方法都是一样的,除以r,直至商为0,余数倒过来写就是结果。
基础知识相信你懂,我这人懒,不行用这么大的数字,随便用个五位数例子吧:12345
截个图给你看。
36进制答案是 9IX
十进制100041539750 = 三十六进制19YI5E3Q
H. 如何把三十六进制转化成十进制
100以内一点的10转16心算比较快,复杂的用“计算器”算了。10转16用传统的计算方式可以了,就是大于15小于256的10进制数除以16为的值为十位的16进制数,其余数为个位的16进制数,没余数则个位为0。如61的16进制是3d,61除以16得3余13,3作十位数,13转成d为各位数。
I. 什么是36进制
三十六进制,是数据的一种表示方法。同我们日常生活中的表示法不一样。它由0-9,A-Z组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-35。
进制说明:
36进制是 0-F ()