這裡主要是十進位製到二進位制至十六進製制之間的轉換
#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;
}
#includeint 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 ...