平常我們用的數字系統是十進位制的,而計算機使用的是二進位制,而時、分、秒這樣的時間單位,用的是六十進位制……,這裡是進位制的轉換和一些性質。
接下來我會用 
一個十進位的數字 
相同的,非整數的十進位數字 
而 
舉例來說 
在算十進位除法的時候,經常會出現循環小數,例如: 
舉例來說,
| 1 | 4 | 7 | 
|---|---|---|
| 001 | 100 | 111 | 
接下來,用 2 個 bit 表示四進位下的一個位數:
| 01 | 10 | 01 | 11 | 
|---|---|---|---|
| 1 | 2 | 1 | 3 | 
我們得出 
事實上,
當一個數字乘以 
這是一種常見的的十進位轉二進位的方法:有一個數字 
可以這麼做的原因是,每次取 
接著是小數部分 
可以這麼做是因為,每次乘以 
至於 
其實無論多少進位,都可以使用這種方式互相轉換,且這個方式無論在手動計算或寫程式計算都很方便,像這樣可以將 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using namespace std;
string convert(double n, int k){
    int a = (int) n;
    double b = n - a;
    string ans;
    while(a > 0){
        ans += a % k + '0';
        a /= k;
    }
    reverse(ans.begin(), ans.end());
    if(b == 0) return ans;
    ans += '.';
    while(b > 0){
        b *= k;
        ans += (int)b + '0';
        b -= (int)b;
    }
    return ans;
}
需要注意的是,有可能會遇到某進位制無法精確表示的狀況(見上方的浮點數精確性),此時在 while(b > 0) 這個迴圈就會卡住,例如 convert(0.375, 3) 就會發生這個狀況,可以加個位數限制之類的,至於手算時會比較容易注意到這個問題,就沒有太大影響。