বাশ কেন 010 কে 8 বলে মনে করে?


17

বাশ কেন 010 = 8 সংখ্যাটি মনে করে?

x=010
echo $x
  010
echo $(( x+0 ))
  8
echo $(( x-2 ))
  6

আমি ভেবেছিলাম এটি বাইনারি হতে পারে তবে 010 = 10 = 2. তবে কেন এটি 8 হয় এবং আমি এটি কীভাবে 010 = 10 (এবং 010 - 2 = 8) ভাবতে পারি?


15
নেতৃস্থানীয় 0এটি অষ্টমাল হতে বলে। আপনি শুধু যদি x=10তারপর echo $((x+0))তারপর শো 10। এছাড়াও, এর $সাথে অতিরিক্তের কোনও প্রয়োজন নেই ()
টেরেন্স

2
অনেক সংখ্যক পার্সারে, 0108 এর অর্থ দাঁড়ায় 8 কারণ 0সামনের দিকে রাখার অর্থ অষ্টাল, 0xকিছু ভাষায় রাখার অর্থ হেক্সের অনুরূপ ।
ডেরেক 朕 會

9
প্রোগ্রামিং করার সময় এটি জেনে রাখা একটি গুরুত্বপূর্ণ বিষয়। বেশিরভাগ ভাষায় 0অষ্টাল, 0xহেক্স এবং 0bবাইনারি ট্রিগার করে ।
শেঠ

ডাউনভোটের ব্যাখ্যা?
টিম

3
@ টিম কেন এটি 8-হবে না? ;-) যদিও আমার ডাউনটোট না তবে এটি সম্ভবত খুব বেসিক। এটি বেশ স্বাভাবিক আচরণ।
রিনজউইন্ড

উত্তর:


42

একটি দিয়ে শুরু হওয়া নম্বর ক্রমগুলি 0অষ্টাল সংখ্যা হিসাবে ব্যাখ্যা করা হয়।
অষ্টক 10= দশমিক 8

দশমিক সংখ্যা হিসাবে এটি বিবেচনা করার জন্য বাশ পেতে, শীর্ষস্থানীয় শূন্যটি মুছে ফেলুন বা এর সাথে দশমিক চাপ দিন:

N=010
N=$((10#$N))

সাধারণত এটি সমস্ত ঘাঁটির জন্য কাজ করে, কেবল 10যে বেসটি চান তার সাথে প্রতিস্থাপন করুন :

N=[base#]n

প্রশ্নটি সমাধানের দুটি উপায় নিয়ে সম্পাদনা করেছেন।
পাবি

1
@ আপনি এটি করতে শেষ করুন যে আপনি শেষ অঙ্কটি কাটাতে $ use N%? Use এবং তারপরে 0. {N: - 0. 0 দিয়ে ফাঁকা প্রতিস্থাপন করতে পারেন
র্যান্ডম 832

@ টিম থাকলে আমি কীভাবে বুঝতে পারি না। $ {$ {N%?}: - 0 z zsh এ কাজ করে তবে ব্যাশ বা ksh এ নয়। (এছাড়াও, :-আমার মন্তব্যে :-0
উপরেরটি

আপনার উত্তরে আপনার অন্তর্ভুক্ত করা উচিত যে আপনি " ফর্ম [বেস #] এন দিয়ে কোনও বেসকে জোর করতে পারেন , যেখানে বেসটি পাটিগণিত বেসকে উপস্থাপন করে 2 এবং 64 এর মধ্যে দশমিক সংখ্যা, এবং n সেই বেসের একটি সংখ্যা " উত্স: বাশ রেফ
djeikyb
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.