大數進製轉換

2021-09-24 13:04:02 字數 1324 閱讀 3402

對於數值不是很大可以直接表示的數,以求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 儲...