理解十進位制整數轉二進位制整數

2022-09-19 22:18:23 字數 676 閱讀 4173

《演算法(第四版)》中的習題 1.3.5 中有這樣一段**:

stacks = new stack<>();

while (n > 0)

for (int d : s) system.out.print(d);

system.out.println();

其作用是列印十進位制整數 n 的二進位制表示。下面解釋該演算法背後的道理。

為簡化問題,預設輸入的整數為正。

二進位制整數轉十進位制整數的過程如下:

\[(k_nk_\dotsm k_1k_0)_2=k_n2^n+k_2^+\dotsm+k_12^1+k_02^0

\]對於十進位制整數 \((s)_\),令:

\[(s)_=k_n2^n+k_2^+\dotsm+k_12^1+k_02^0

\]要求 \((s)_\) 的二進位制表示,即求 \(k_0\sim k_n\)。而:

\[\frac}=k_n2^+k_2^+\dotsm+k_1\ \ 餘\ k_0\\

\ \\

\frac}=k_n2^+k_2^+\dotsm+k_1\ \ 餘\ k_1

\\.\\.\\.\\

\frac}=k_n\ \ 餘\ k_\\

\ \\

\frac}}=0\ \ 餘\ k_n

\]按以上過程可寫得程式。

1039 十進位制整數轉二進位制

給出乙個十進位制的非負整數x,x 216,把它轉換成二進位制數輸出。輸入為多行,每行乙個整數x,至讀入eof結束。每行輸出x對應的二進位制數值。01 3336553501 11100001 1111111111111111 本題有多種解法 可以用迴圈迭代對2的除法和取餘操作,不過處理的順序與輸出順序...

十進位制整數與二進位制整數 十六進製制整數之間的轉換

十進位制整數 如85 要轉換成二進位制我們最原始的方法呢就是短除法,但是當這個十進位制數比較大時短除法就有些麻煩了。其實可以這樣來計算 如85 64 16 4 1 2 6 1 2 4 1 2 2 1 2 0 1,二進位制最低位從第0位開始 以8位二進位制為例 式子中2的冪次對應第幾位第幾位就寫上1,...

二進位制轉十進位制

二進位制轉十進位制方法很多,如字元陣列,指標法等 下面用字串函式的方法實現 二進位制轉十進位制 主要用 到 string函式性質及pow求乙個數的n次方的函式過載 by adengou 2010.08.04 win7 dev c 5.0 vs 2010 通過 include include incl...