Program bc jest zdefiniowanym przez standard POSIX kalkulatorem o składni podobnej do tej z języka C. Można w nim (między innymi) w łatwy sposób konwertować wartości pomiędzy różnymi radiksami:
obase=2 ibase=16 F43.12E 111101000011.0001001010
Uwaga, jeśli zmienimy ibase (input base) to wszystkie wpisywane liczby będą interpretowane w tym radiksie. Oto przykład:
ibase=2 obase=10 1001 1001
(10_2 == 2_{10}). Cyfry heksadecymalne muszą być wielkimi literami (małe litery to zmienne).
radix 2 | radix 10 | radix 16 | |
---|---|---|---|
10'1111.0(1001) | 47.3 | 2F.4(C) | |
1111'0011'1110'0100'.0101'0001 | 62436.62890625 | F3E4.A1 | |
10'0110.1011 | 38.6875 | 26.B |
Matematycznie:
Część całkowita zawsze wyraża się skończoną liczbą cyfr. Rozważmy część ułamkową.
0.a_1a_2a_3a_4…a_n = \sum_{i=1}^n2^{-i}a_i = \sum_{i=1}^n2^{-i}5^{-i}5^ia_i = \sum_{i=1}^n10^{-i} 5^i a_i = \sum_{i=1}^n \frac{5^i a_i}{10^i}
Suma liczb, które w mianowniku mają potęgę 10 ma oczywiście skończone rozwinięcie dziesiętne. To zadanie wyjaśnia również, dlaczego ujemne potęgi dwójki wyglądają jak potęgi piątki (0.5, 0.25, 0.125…)
011'00110 + 101'01110 = 101'10111
liczba | znak | wykladnik | mantysa | |
---|---|---|---|---|
0.5 | 0 | 126 (-1) | (1)0 | |
-17 | 1 | 127 (0) | (1)0001 | |
-1/32 | 1 | 122 (-5) | (1)0 | |
384 | 0 | 134 (7) | (1)1 |