pascal問題,二進位制轉十進位制

2022-02-27 08:43:20 字數 2791 閱讀 3572

1樓:匿名使用者

二進位制轉十進位制:如1101 ,十進位制為1*2^0+0*2^1+1*2^2+1*2^3,其中2為權 ,二進位制的每一位分別與權的n-1次方相加。

十六進位制轉十進位制:如53,十進位制為3*16^0+5*16^1,其中16為權,

2樓:匿名使用者

1、你所謂的「二進位制轉十進位制」,應該是指表示方式的轉換,也就是字串之間的轉換。因為如果是數值,不存在什麼幾進位制,它在記憶體中都是以01儲存的。delphi的進位制字串轉換有很多現成的函式,pascal得費點勁。

2、如果您要是問學pascal的時候如何在草紙或黑板上把二進位制的數演算成十進位制的方法,你完全可以找本初中或小學的課外輔導書,我就不奉陪了。

一、二進位制轉十進位制

function bintodec(binstr: string): string;

vari, j: integer;

begin

result := '';

i := 0;

for j := 1 to length(binstr) do

begin

if j > 1 then

i := i shl 1;

if binstr[j] = '1' then inc(i)

else if binstr[j] <> '0' then exit;

end;

if i >= 0 then j := i

else j := -i;

while j > 0 do

begin

result := chr(j mod 10 + 48) + result;

j := j div 10;

end;

if i < 0 then result := '-' + result;

end;

例如''11101111111111111111111111111001'',經bintodec轉化為''-268435463''。

二、十六進位制轉十進位制,類似:

function hextodec(hexstr: string): string;

vari, j, k: integer;

begin

result := '';

i := 0;

for j := 1 to length(hexstr) do

begin

if j > 1 then

i := i shl 4;

k := -1;

case hexstr[j] of

'0'..'9': k := ord(hexstr[j]) - 48;

'a'..'f': k := ord(hexstr[j]) - 55;

'a'..'f': k := ord(hexstr[j]) - 87;

end;

if k < 0 then exit;

inc(i, k);

end;

if i >= 0 then j := i

else j := -i;

while j > 0 do

begin

result := chr(j mod 10 + 48) + result;

j := j div 10;

end;

if i < 0 then result := '-' + result;

end;

例如''effffff9'',經hextodec轉化為''-268435463''。

二進位制轉十進位制,十進位制轉二進位制

3樓:sweet丶奈何

十進位制轉二進位制:

用2輾轉相除至結果為1

將餘數和最後的1從下向上倒序寫 就是結果

例如302

302/2 = 151 餘0

151/2 = 75 餘1

75/2 = 37 餘1

37/2 = 18 餘1

18/2 = 9 餘0

9/2 = 4 餘1

4/2 = 2 餘0

2/2 = 1 餘0

故二進位制為100101110

二進位制轉十進位制

從最後一位開始算,依次列為第0、1、2...位第n位的數(0或1)乘以2的n次方

得到的結果相加就是答案

例如:01101011.轉十進位制:

第0位:1乘2的0次方=1

1乘2的1次方=2

0乘2的2次方=0

1乘2的3次方=8

0乘2的4次方=0

1乘2的5次方=32

1乘2的6次方=64

0乘2的7次方=0

然後:1+2+0

+8+0+32+64+0=107.

二進位制01101011=十進位制107.

pascal 十進位制轉二進位制

4樓:匿名使用者

十進位制的數轉換為二進位制的數的方法為除2取餘;

舉例說明:

1010/2=5.....0;

5/2=2.......1

2/2=1.......0

1/2=0.......1

直到為0,然後倒過來寫(1010)二進位制就ok了;

貌似你的程式的這兒

if a[j]>=10 then write(chr(a[j]+55))

else write(a[j]);有問題,直接write(a[i])就行了!!!

5樓:匿名使用者

write(a[i]);不可以,原程式是對的

二進位制轉十進位制公式

方法 按權求和 例 二進位制1011轉換成十進位制是11 規律 個位上的數字的次數是0,十位上的數字的次數是1,依次遞增,而十 分位的數字的次數是 1,百分位上數字的次數是 2,依次遞減。注意 不是任何一個十進位制小數都能轉換成有限位的二進位制數。通用公式為 abcd.efg 2 d 20 c 21...

二進位制轉十六進位制,十六進位制轉二進位制

十六進位制每一位代表十六,有0 f十六中選擇,而二進位制每一位只有0和1兩種選擇,如果要表示十六種選擇需要四位 1個十六進位制的數的範圍是0 15 每一個2進位制數可以表示2個數字既0和1 因此 16個數字 需要4個二進位制數來表示 2 2 2 2 16所以16進位制就可以轉換為 4個二進位制的數 ...

二進位制與十進位制的轉換的公式,二進位制轉十進位制公式

計算機內部是以二進位制形式表示資料和進行運算的 計算機內的地址等訊號常用十六進位制來表示,而人們日常又習慣用十進位制來表示資料。這樣要表示一個資料就要選擇一個適當的數字符號來規定其組合規律,也就是要確定所選用的進位計數制。各種進位制都有一個基本特徵數,稱為進位制的 基數 基數表示了進位制所具有的數字...