Pengaturan ibase
berarti Anda perlu mengatur obase
basis yang sama. Menjelaskan contoh Anda akan menunjukkan ini:
echo "ibase=F;obase=A;C0" | bc
Anda mengatur bc
untuk mempertimbangkan nomor input sebagaimana diwakili dalam basis 15 dengan "ibase = F". "obase = A" mengatur nomor output ke basis 10, yang merupakan default.
bc
membaca C0 sebagai angka dasar 15: C = 12. 12 * 15 = 180.
echo "ibase=F;obase=10;C0" | bc
Dalam yang satu ini, Anda menetapkan input ke basis 15, dan output ke 10 - di basis 15, sehingga basis output adalah 15. C0 input di basis 15 adalah C0 output di basis 15.
echo "ibase=16;obase=A;C0" | bc
Atur input ke basis 16, output ke basis 10 (A dalam basis 16 adalah 10 di basis 10).
C0 dikonversi ke basis 10 adalah: 12 * 16 = 192
Aturan pribadi saya adalah mengatur obase terlebih dahulu, sehingga saya bisa menggunakan basis 10. Kemudian atur ibase, juga menggunakan basis 10.
Catatan yang bc
memang memiliki pengecualian ironis: ibase=A
dan obase=A
selalu menetapkan input dan output ke basis 10. Dari bc
halaman manual:
Single digit numbers always have the value of the digit
regardless of the value of ibase.
Perilaku ini diabadikan dalam spesifikasi bc
: Dari spesifikasi OpenGroup 2004bc
:
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.
Itu sebabnya ibase=F
pengaturan mengubah basis input Anda ke basis 15, dan mengapa saya menyarankan untuk selalu mengatur basis menggunakan basis 10. Hindari membingungkan diri sendiri.