進製轉換以及萬進製與億進製的思路

2021-10-24 21:30:10 字數 1740 閱讀 6686

這裡主要是十進位製到二進位制至十六進製制之間的轉換

#include

#include

#include

using

namespace std;

static string str =

"0123456789abcdef"

;int

main()

轉換後的結果與實際的結果順序是相反的,如果需要輸出的話,逆序就可以了

這裡是引用

萬進製核心思想:

用陣列儲存數值,將每個陣列元素當成「大數」的一位數,如果元素值大於9999,則要進製,進製的值為元素值%10000;這也可以理解為乙個「萬進製」,可以儲存的值,就相當於十進位制的每一位從010變成了09999,就等同於從十進位制變成了萬進製。

如:662343889 * 5 = 3311719445

那麼如果用萬進製計算:可以設乙個陣列a[3]; a[2] = 3889 ; a[1] = 6234 ; a[0] = 6 ;

第一步:a[2] * 5 = 19445 ; 19445 %10000 = 1餘9445 9445留下,1進製;

第二步:a[1] * 5 = 31170 ; 31170 %10000 = 3餘1170 1170留下,加上進製的1為1171(終值),3進製;

第三步:a[0] * 5 = 30 ; 30+3(進製)為終值。

按順序輸出得:3311719945 ;僅僅三步我們便得出了最後結果,如果用十進位制呢?每位相加,對於本例,至少要十步。效率快了3倍不止。

億進製核心思想

用陣列儲存數值,將每個陣列元素當成「大數」一位數,如果元素值大於99999999,則要進製,進製的值為元素值%100000000;這也可以理解為乙個「億進製」,可以儲存的值,就相當於十進位制的每一位從010變成了099999999,就等同於從十進位制變成了億進製。

效率:n取=100000時,大概要輸出2.1w位。

十進位制:10w位的c語言程式執行時間在7s左右,未測試c++執行時間

萬進製:10w位c語言的執行時間在2.1s左右,c++執行時間2.7s左右

億進製:10w位的c語言執行時間1.2s左右,c++執行時間2.0s左右。

結論1:超大量計算時,c++要比c慢一些。

結論2:萬進製的高效顯而易見了,尤其是億進製, 須知程式執行的時限一般在1秒或3秒,尤其是對於**效率要求很高的題。多出0.幾秒,通過概率會提高很多。

具體**實現

輸入:n (第n為斐波那契數。)

輸出:輸出該數。

萬進製**

#include

int main()

if(carry > 0) }}

printf("%d",a1[places]);

for(i = (places-1); i >= 0; i–)

printf("%04d", a1[i]); //域寬為4,不夠補0

return 0;

}

億進製**

#include

int main()

if(carry > 0) }}

printf("%d",a1[places]);

for(i = (places-1); i >= 0; i–)

printf("%08d", a1[i]);

return 0; 

}

進製以及進製之間的轉換

常用進製 下面例子中是舉數字10在以下這些進製中是如何表示的 二進位制 在計算機中使用,取值範圍 0 和 1,以 0b 開頭,如 0b10 八進位制 取值範圍0 7,以0開頭,如 010 十進位制 在日常生活中使用,取值範圍0 9 如 10 十六進製制 取值範圍 0 9 和 a f,以0x開頭,如 ...

Go語言進製以及進製轉換

var bin1 0b1101package main import fmt func main var oct 0o1234567package main import fmt func main var hex 0x1234package main import fmt func main 1....

10進製與2進製的轉換

10進製與2進製轉換還真是個麻煩事,由於生活中,我們都是用10進製的,所以,當我們生活中遇到2進製的數字時,總是需要轉換成10進製來處理,而電腦開發者,還經常要在兩種進製裡互換 以前,將10進製與2進製互換,我總是以2n次方來轉,如下 18 轉 2進製 n次方方法 18 16 2 18 24 03 ...