1樓:武風
十進位制數n轉k進位制 用短除法
pascal
var n,len,i,k:longint;
a:array[1..100] of longint;
begin
read(n);
read(k);
repeat
inc(len);
a[len]:=n mod k;
n:=n div k;
until n=0;
for i:=len downto 1 do beginif a[i]>=10 then write(chr(a[i]-10+ord('a'))) else write(a[i]);
end;
end.
n進位制數用字串s儲存,再轉化為十進位制
vars:string; c:char;
i,j,l,sum,len:longint;
function power (x,y:longint):longint;
var i:longint;
begin
power:=1;
if y=0 then exit;
for i:=1 to y do power:=power*x;
end;
begin
read(c);
while c<>' ' do
begin
s:=s+c;
read(c);
end;
read(l); len:=length(s);
for i:=len downto 1 dobegin
if ord(s[i])-ord('0')<10 then inc(sum,(ord(s[i])-ord('0'))*power(l,len-i))
else
begin
case s[i] of
'a':j:=10;
'b':j:=11;
'c':j:=12;
'd':j:=13;
'e':j:=14;
'f':j:=15;
end;
inc(sum,j*power(l,len-i));
end;
end;
writeln(sum);
end.
2樓:匿名使用者
參見
微控制器,進製轉換問題?進製計算機進製轉換問題
十六進製459c4000轉成二進位是0100 0101 1001 1100 0100 0000 0000 0000最高位為符號位,0表示整數,1表示負數,因此這個是乙個正數。然後往後數8個位,這8個位叫階碼,就是1 1011 110 十進位的這個127是固定的 12。將階碼換成1.然後就是 1100...
C語言進位制轉換問題,C語言中各進位制的轉換問題
大數轉換成小數進位制時主要是求餘演算法,小數進位制轉換成大數進位制時要用n次方演算法。求餘後把數字儲存起來輸出就可以了。16進位制 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 a 1010 b 1011 ...
十進位制轉換成八進位制的轉換方法,10進位制轉8進位制方法
方法1 採用除8取餘法。例 將十進位制數115轉化為八進位制數。結果 115 10 163 8 方法2 先採用十進位制化二進位制的方法,再將二進位制數化為八進位制數。例 115 10 1110011 2 163 就是十進位制數直接除以8,得出得整數就是八進位制的十位以前的數,餘數是八進位制個位數,看...