सेटिंग का ibase
मतलब obase
है कि आपको उसी बेस में सेट करना होगा । आपके उदाहरणों को समझाते हुए यह दिखाया जाएगा:
echo "ibase=F;obase=A;C0" | bc
आप bc
बेस संख्या 15 में "ibase = F" के साथ दर्शाए गए इनपुट संख्या पर विचार करने के लिए सेट हैं । "obase = A" आउटपुट संख्या को आधार 10 पर सेट करता है, जो कि डिफ़ॉल्ट है।
bc
C0 को आधार संख्या 15 के रूप में पढ़ता है: C = 12. 12 * 15 = 180।
echo "ibase=F;obase=10;C0" | bc
इस एक में, आप बेस 15 में इनपुट सेट करते हैं, और आउटपुट 15 से बेस 15 में, इसलिए आउटपुट बेस 15. 15 है। बेस 15 में C0 इनपुट बेस 15 में C0 आउटपुट है।
echo "ibase=16;obase=A;C0" | bc
बेस 16 पर इनपुट सेट करें, बेस 10 पर आउटपुट (बेस 16 में ए 10 बेस 10 में है)।
C0 को आधार 10 में परिवर्तित किया गया है: 12 * 16 = 192
मेरा व्यक्तिगत नियम है कि पहले ओबेस को सेट किया जाए, ताकि मैं बेस 10 का उपयोग कर सकूं। फिर आईबेस को भी सेट करें, बेस 10 का भी उपयोग करें।
ध्यान दें कि bc
एक विडंबना अपवाद है: ibase=A
और obase=A
हमेशा बेस 10 पर इनपुट और आउटपुट सेट करता है। bc
मैन पेज से:
Single digit numbers always have the value of the digit
regardless of the value of ibase.
इस व्यवहार को विनिर्देशन में निर्दिष्ट किया गया है bc
: 2004 के ओपनग्रुप bc
विनिर्देश से :
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.
इसीलिए ibase=F
सेटिंग ने आपके इनपुट बेस को आधार 15 में बदल दिया, और मैंने हमेशा बेस 10 का उपयोग करके आधार सेट करने की सिफारिश की। अपने आप को भ्रमित करने से बचें।