কেন হেক্সাডেসিমাল সংখ্যা হিসাবে উপসর্গ করা হয় 0x
? আমি উপসর্গটির ব্যবহার বুঝতে পারি তবে কেন 0x
বেছে নেওয়া হয়েছিল তার তাত্পর্য আমি বুঝতে পারি না ।
কেন হেক্সাডেসিমাল সংখ্যা হিসাবে উপসর্গ করা হয় 0x
? আমি উপসর্গটির ব্যবহার বুঝতে পারি তবে কেন 0x
বেছে নেওয়া হয়েছিল তার তাত্পর্য আমি বুঝতে পারি না ।
উত্তর:
সংক্ষিপ্ত কাহিনী:0
পার্সার এটি একটি ধ্রুবক (এবং একটি আইডেন্টিফায়ার / সংরক্ষিত শব্দ) সঙ্গে তার আচরণ এর বলে। সংখ্যা বেস নির্দিষ্ট করার জন্য এখনও কিছু দরকার: এটি x
একটি স্বেচ্ছাসেবী পছন্দ।
দীর্ঘ গল্প: 60 এর দশকে, প্রচলিত প্রোগ্রামিং নম্বর সিস্টেমগুলি ছিল দশমিক এবং অষ্টাল - মেইনফ্রেমে 12, 24 বা 36 বিট প্রতি বিট ছিল, যা 3 = লগ 2 (8) দ্বারা সুন্দরভাবে বিভাজ্য।
বিসিপিএল ভাষা 8 1234
অষ্টাল সংখ্যার জন্য সিনট্যাক্স ব্যবহার করে । কেন থম্পসন যখন বিসিপিএল থেকে বি তৈরি করেছিলেন, তিনি 0
পরিবর্তে উপসর্গটি ব্যবহার করেছিলেন। এটি দুর্দান্ত কারণ
0
উভয় ভিত্তিতে একই)00005 == 05
), এবং#123
)।যখন বি থেকে সি তৈরি করা হয়েছিল, তখন হেক্সাডেসিমাল সংখ্যার প্রয়োজনীয়তা দেখা গেল (পিডিপি -11 এ 16-বিট শব্দ ছিল) এবং উপরের সমস্ত পয়েন্ট এখনও বৈধ ছিল। যেহেতু অন্যান্য মেশিনগুলির জন্য এখনও অষ্টালগুলির প্রয়োজন 0x
ছিল , তা নির্বিচারে বেছে নেওয়া হয়েছিল ( 00
সম্ভবত বিশ্রী হিসাবে প্রত্যাখ্যান করা হয়েছিল)।
সি # সি এর বংশধর, সুতরাং এটি সিনট্যাক্সের উত্তরাধিকার সূত্রে প্রাপ্ত।
0x
হয় না ওভারটি 00
পছন্দ / বিশ্রীতা ছিল। 00
বিদ্যমান কোড ভঙ্গ করবে। 0010
অষ্টাল যেমন হয় 8
, 0010
তেমনি হেক্সিডিসিমালও হবে 16
। তারা দ্বিতীয় সংখ্যাটির সূচক হিসাবে কোনও সংখ্যা ব্যবহার করতে পারেনি (বাদে 8
বা 9
, এবং উভয়ই হেক্সিডেসিমালের সাথে সম্পর্কিত কোনও তাত্পর্য রাখে না) তাই কোনও চিঠি আবশ্যক। এবং এটি হয় 0h
বা 0x
( এইচ ই এক্স আইডিসিমাল) ছেড়ে যায় । এই বিন্দু থেকে দেখে মনে হচ্ছে এটি সত্যিকার অর্থেই পছন্দের দিকে ফিরে এসেছে।
0
অকট্যাল প্রিফিক্স বছরের পর বছর ধরে তাই খুব অনেক সমস্যা দেখা দেয়। উল্লেখযোগ্যভাবে যুক্তরাজ্যের মতো দেশে যেখানে টেলিফোন নম্বরগুলি a দিয়ে শুরু হয় 0
। জাভাস্ক্রিপ্ট এবং অন্যান্য অনেক ভাষাগুলি এগুলি অষ্টাল হিসাবে বিশ্লেষণ করবে, সংরক্ষণের আগে নম্বরটি ম্যাঙ্গলিং করবে। মজা করার জন্য যোগ করার জন্য, এক জনপ্রিয় ডাটাবেসের পণ্যের হবে চুপটি দশমিক পার্সিং ফিরে যান সংখ্যা উপস্থিত রয়েছে একটি করে 8
বা 9
।
দ্রষ্টব্য: আমি সঠিক উত্তরটি জানি না, তবে নীচে কেবলমাত্র আমার ব্যক্তিগত জল্পনা!
যেমন একটি সংখ্যার আগে একটি 0 উল্লেখ করা হয়েছে অর্থ এটি অষ্টাল:
04524 // octal, leading 0
হেক্সাডেসিমাল সংখ্যা বোঝাতে একটি সিস্টেম নিয়ে আসা দরকার এবং আপনি লক্ষ করুন যে আমরা সি স্টাইলের পরিবেশে কাজ করছি। কীভাবে সমাবেশের মতো এইচ দিয়ে শেষ হবে? দুর্ভাগ্যক্রমে আপনি পারবেন না - এটি আপনাকে টোকেনগুলি তৈরি করতে দেয় যা বৈধ শনাক্তকারী (যেমন আপনি কোনও ভেরিয়েবলের নাম একই জিনিস রাখতে পারেন) যা কিছু দুষ্টু অস্পষ্টতার জন্য তৈরি করে।
8000h // hex
FF00h // oops - valid identifier! Hex or a variable or type named FF00h?
আপনি একই কারণে কোনও চরিত্র নিয়ে নেতৃত্ব দিতে পারবেন না:
xFF00 // also valid identifier
একটি হ্যাশ ব্যবহার সম্ভবত ফেলে দেওয়া হয়েছিল কারণ এটি প্রিপ্রোসেসরের সাথে বিরোধযুক্ত:
#define ...
#FF00 // invalid preprocessor token?
শেষ পর্যন্ত, যে কারণেই হোক না কেন, তারা হেক্সাডেসিমাল বোঝাতে একটি শীর্ষস্থানীয় 0 এর পরে একটি এক্স রাখার সিদ্ধান্ত নিয়েছে। এটি দ্ব্যর্থহীন যেহেতু এটি এখনও একটি সংখ্যা অক্ষর দিয়ে শুরু হয় তাই কোনও বৈধ শনাক্তকারী হতে পারে না এবং এটি সম্ভবত একটি শীর্ষস্থানীয় 0 এর অষ্টাল সম্মেলনের ভিত্তিতে তৈরি।
0xFF00 // definitely not an identifier!
0xFFAB1234
হিসাবে লিখতে হবে 0FFAB1234h
। আমি Pascal সালে ইনলাইন এ এস এম থেকে এটা মনে আছে যখন আমি ছিল তরুণ stackoverflow.com/q/11733731/995714
এটি অন্য কোনও বেসের চেয়ে সংখ্যাটি হেক্সাডেসিমালে রয়েছে তা বোঝানোর একটি উপসর্গ। সি প্রোগ্রামিং ভাষাটি সংকলক বলতে এটি ব্যবহার করে।
উদাহরণ:
0x6400
6*16^3 + 4*16^2 + 0*16^1 +0*16^0 = 25600.
সংকলক পড়লে অনুবাদ করে 0x6400
, এটি 0x শব্দটির সাহায্যে সংখ্যাটি হেক্সাডেসিমাল বোঝে । সাধারণত আমরা (00৪০০) ১ or বা (00৪০০) ৮ বা যা কিছু .. দ্বারা বুঝতে পারি
জন্য বাইনারি এটি হবে:
0b00000001
আশা করি আমি কোনওভাবে সাহায্য করেছি।
শুভ দিন!
x6400
? x
এখনও হেক্সাডেসিমেল অনুমান করতে ব্যবহার করা যেতে পারে।
পূর্ববর্তী 0 0 বেস 2, 8 বা 16 এর একটি সংখ্যা নির্দেশ করতে ব্যবহৃত হয়।
আমার মতে, 0x হেক্স নির্দেশ করতে বেছে নেওয়া হয়েছিল কারণ 'x' হেক্সের মতো শোনাচ্ছে।
শুধু আমার মতামত, তবে আমি মনে করি এটি উপলব্ধি করে।
শুভ দিন!