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 ()