不同進製大數之間的相互轉換

2021-08-16 18:28:24 字數 1215 閱讀 7338

本文參考sjf0115 **大數的進製轉換

根據之前所講的大數取餘演算法,我們可以再進一步寫乙個不同進製的大數相互轉化的演算法。

我們約定大數用字元陣列的形式儲存。

比如我們把十進位制數443轉換為三進製數,

1. 用被除數第一位的數對3取餘的第一位的餘數1,除以3得到商的第一位

2. 用上一步得到的餘數乘以10再加上被除數第二位的數4,對3取餘得到第二位的餘數2,除以3得到商的第二位

3. 用上一步得到的餘數乘以10再加上被除數第三位的數3,對3取餘得到第三位的餘數2,除以3得到商的第三位

最後得到的餘數是本輪所要求的餘數,而商的各位已經在每一步中得到。所以我們得到443除以3商147餘2

我們以商147作為被除數,以3作為除數,再進行上面個的操作,得到新的商和餘數。一直進行下去直到被除數是0,我們把每一輪得到的餘數逆序排列就得到最終的三進製數。

下面給出實現的**

#include 

#include

#include

using

namespace

std;

//使v逆序

void reverseorder(vector

&v);

//刪除v前面的'0'

void clearzero(vector

&v);

//把a進製的數from轉換為b進製的數並存放在to中

void convert(int a, int b, vector

from, vector

&to)//for迴圈之後,quotient陣列存放本輪的商,reminder存放本輪的餘數

to.push_back(reminder + '0');

clearzero(quotient);//把quotient前面的'0'全部刪除

}reverseorder(to);

clearzero(to);//清除to前面的'0'

}int main()

void reverseorder(vector

&v)void clearzero(vector

&v)

js 不同進製之間相互轉換

如果a進製與b進製都不等於10,則十進位製作為橋梁進行轉換 例如10進製的數字11 轉換為3進製為102 10進製的數字11 轉換為4進製為23 現在進行3進製轉4進製 1 3進製轉10進製 2 10進製轉4進製 在js裡。我們可以借助 parseint 跟 numberobject.tostrin...

不同進製間的相互轉換的理解

不同進製間的相互轉換一般有兩種方法,第一種是直接先確定最高位,然後逐步確定低位的數字 第二種便是先確定最低位然後在然後逐步確定到最高位下面便是對這兩種方法的具體解析 本文以二進位制和十進位制的相互轉換來說明具體道理 1 同乙個數字,放在不同的數字上,代表不同大小的數。例如 十進位制中,百位上的1表示...

不同進製的組成規則及相互轉換

以0b開頭,由0,1組成,如0b10101011。以0開頭,由0,1,2,7組成,如07541。不以0開頭的整數,如354。以0x開頭,由0,1,2 9,a,b,c,d,e,f組成,如0xa354,0354a。首先,將十進位制除以該進製的基數取餘數,直到商為0,然後,把先得到的餘數作為低位 靠右 後...