Ayar , aynı temelde ibase
ayarlamanız gerektiği anlamına gelir obase
. Örneklerinizi açıklamak şunu gösterecektir:
echo "ibase=F;obase=A;C0" | bc
Sen set bc
"ibase = F" ile baz 15'de gösterildiği gibi giriş sayıları dikkate almak. "obase = A", çıkış numaralarını varsayılan 10 olan temel 10 a ayarlar.
bc
C0'ı bir baz 15 sayı olarak okur: C = 12. 12 * 15 = 180.
echo "ibase=F;obase=10;C0" | bc
Bu ayarda, giriş 15 tabanına ayarlanır ve çıkış 15 - 15 tabanına, yani çıkış tabanı 15 olur. 15 tabanındaki C0 girişi 15 tabanındaki C0 çıkışıdır.
echo "ibase=16;obase=A;C0" | bc
Tabanı 16'ya ayarlayın, tabana 10 verin (tabanda 16 A, tabanda 10 10'dur).
10 tabanına dönüştürülen C0: 12 * 16 = 192
Benim kişisel kuralım, ilk önce obase'i ayarlamaktır, böylece 10 tabanını kullanabilirim.
Not bc
yapar ironik bir istisna vardır: ibase=A
ve obase=A
hep itibaren bankasına 10 giriş ve çıkış setleri bc
adam sayfası:
Single digit numbers always have the value of the digit
regardless of the value of ibase.
Bu davranış, aşağıdaki şartnamede belirtilmiştir bc
: 2004 OpenGroup bc
şartnamesinden :
When either ibase or obase is assigned a single digit value from
the list in 'Lexical Conventions in bc', the value shall be assumed
in hexadecimal. (For example, ibase=A sets to base ten, regardless
of the current ibase value.) Otherwise, the behavior is undefined
when digits greater than or equal to the value of ibase appear in
the input.
Bu nedenle, ibase=F
ayar giriş tabanınızı taban 15 olarak değiştirdi ve tabanını her zaman taban 10 kullanarak ayarlamamı önerdim.