對於數值不是很大可以直接表示的數,以求10進製數11的2進製表示為例,我們可以使用如下的方法直接進行進製轉換:
但是對於較大的數如1000位的數(數字有1000個,不是1000位元組),我們無法直接表示,因此不能直接得出,但是我們可以將上述過程分解。觀察上述運算,其實是經過了4次除法(11 / 2,5 / 2,2 / 2,1 / 2)得出4個餘數,而對於每次的除法,我們依然可以繼續分解。
以11 / 2為例,可以分解為如下兩個過程
十位的1除以2,商為0,餘數為1;
個位的1除以2,但是因為10位除以2的時候有餘數1,因此需要加上之前的餘數,即被除數 = 1 * 10 + 1 = 11,個位的運算因此應該為11 / 2,商為5,餘數為1,得出第乙個餘數1。
然後將05前面所有的0去掉變成5,使用5繼續除以2,重複此過程直到商為0。
根據上述思想,我們可以使用陣列儲存大數,然後通過將計算分解完成大數的進製轉換,完整**:
#include using namespace std;
// x進製轉換為y進製
int conversion(int in, int out, int n, int x, int y)
out[size++] = remainder;
// 去除商前面所有的0
// 2019/6/18 15.51新增判斷範圍條件,之前為 while (in[i] == 0) i++;
while (in[i] == 0 && i < n) i++;
}return size;
}int main()
// 10進製轉換為2進製
int size = conversion(in, out, n, 10, 2);
// 輸出,需要逆序輸出
for (int i = size - 1; i >= 0; i--)
cout << endl;}}
**的詳細解釋,以求10進製數11的二進位制表示為例:
北大考研機試 進製轉換
清華考研機試 10進製 vs 2進製
大數進製轉換
進製轉換的一些筆記,由淺入深,通過複習得到的一些感悟,寫寫 先寫個最簡單的,十進位制轉二進位制 北郵機試 大家都知道,資料在計算機裡中儲存是以二進位制的形式儲存的。有一天,小明學了c語言之後,他想知道乙個型別為unsigned int 型別的數字,儲存在計算機中的二進位制串是什麼樣子的。你能幫幫小明...
進製轉換 大數除法
我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?斐波那契數列 輸入乙個整數 int 輸出該數二進位制表示中1的個數。其中負數用補碼表示。負數的補碼,前導是一連串的1,int為32位 class solution n 2 el...
簡要整理大數進製轉換
大數進製轉換 最間在寫一道大數題的時候被卡了一下,所以準備整理一下大數的運算,先整理大數的進製轉換.進製轉換的重點是被轉換數不斷被餘被除,一般範圍的整數轉換可以直接用 a b,a b 來解決.int 範圍的十進位制轉二進位制 include using namespace std intmain 儲...