প্রোগ্রামিং করার সময় অন্যান্য নম্বর ঘাঁটি কেন ব্যবহার করবেন


35

আমার সহকর্মীরা এবং আমি কেউ বেস 10 ব্যতীত অন্য কোনও বেসে প্রোগ্রাম নম্বরগুলিতে কেন বেরোতে পারি তা নির্ধারণ করার জন্য আমাদের মনকে বাঁকিয়ে রেখেছি।

আমি প্রস্তাব দিয়েছি যে আপনি যে ভেরিয়েবলগুলি সঠিকভাবে কাজ করছেন তার মধ্যে ভেরিয়েবল স্থাপন করে আপনি দীর্ঘতর সমীকরণগুলি অনুকূল করতে পারবেন (উদাহরণস্বরূপ, যদি আপনার 5 টির কিছু সেট থাকে যা আপনি অবশেষ 5 ব্যবহার করতে পারবেন না) তবে আপনি নিশ্চিত নন যদি এটি সত্য হয়

কোন চিন্তা?


6
আপনার কাছে কি একটি নির্দিষ্ট উদাহরণ রয়েছে যা এই প্রশ্ন উত্থাপন করেছে? বেস -২ বা বেস -১ in এ থাকা জিনিসগুলির স্পষ্টতই তাদের সুবিধা রয়েছে কারণ কম্পিউটারের পক্ষে এটি বোঝা সহজ।
KDiTraglia

4
"বেসে প্রোগ্রামিং নম্বর ..." এর অর্থ কী? সংখ্যা আছে। সময়কাল। এগুলি অভ্যন্তরীণভাবে কিছু বেসে উপস্থাপিত হয় তবে এটি বেশিরভাগ ক্ষেত্রেই কিছু যায় আসে না এবং কোনও গাণিতিক নিয়ম পরিবর্তন করে না ।

12
@ জেএমডি - আপনার দুটি ক্রস পোস্টিংয়ের একটি অপসারণ করতে দয়া করে মডারেটরদের সাথে কাজ করুন এবং একটি পিএএসইতে এখানে রাখুন please সাইটগুলি জুড়ে ক্রস-পোস্টিং ভ্রূণ্য। পরিবর্তে মোডগুলি আপনার জন্য প্রশ্নগুলি স্থানান্তর করতে পারে।

10
@ জেএমডি - ক্রস পোস্ট করা এখনও আপনার কিছু করা উচিত নয়। যদি সেখানে, এই ধরনের প্রশ্নের জন্য একটি মাইগ্রেশন প্রক্রিয়া প্রয়োজন
ওডে

2
@ জেএমডি পোস্টটি অতিক্রম করবেন না, একাধিক সাইটের জন্য উপযুক্ত হওয়া প্রশ্ন অত্যন্ত বিরল। এইবার উদাহরণস্বরূপ, আপনার প্রশ্ন স্ট্যাক ওভারফ্লো প্রসঙ্গে ছিল। এমনকি যদি আপনার প্রশ্ন উভয় সাইটের পক্ষে উপযোগী ছিল, তবে সাইটগুলির চারপাশে আপনার প্রশ্ন কেনা সাধারণত ভ্রূণ্য। আমরা সবাই এখানে আমাদের সময় স্বেচ্ছাসেবক, আপনি ক্রস পোস্টিংয়ের আগে স্ট্যাক ওভারফ্লোতে যে উত্তরগুলি পেয়েছিলেন তা মূল্যায়নের জন্য আপনি কমপক্ষে কিছুক্ষণ অপেক্ষা করতে পারতেন।
ইয়ানিস

উত্তর:


59

সংখ্যা 10 ব্যাস 10 ব্যতীত কোডগুলিতে সংখ্যা লিখার স্বাভাবিক কারণ হ'ল আপনি বিট-টুইডলিং করছেন।

সি-তে একটি উদাহরণ বাছাই করতে (কারণ সি যদি কোনও কিছুর জন্য ভাল হয় তবে এটি বিট-টুইডলিংয়ের পক্ষে ভাল), কিছু নিম্ন-স্তরের ফর্ম্যাটটি একটি বাইটে একটি 2-বিট এবং 6-বিট নম্বর এনকোড করে বলে xx yyyyyy:

main() {
    unsigned char codevalue = 0x94; // 10 010100
    printf("x=%d, y=%d\n", (codevalue & 0xc0) >> 6, (codevalue & 0x3f));
}

উত্পাদন করে

x=2, y=20

এ জাতীয় পরিস্থিতিতে দশমিক ক্ষেত্রে লেখার চেয়ে হেক্সে স্থির লেখাগুলি কম বিভ্রান্তিকর, কারণ একটি হেক্স ডিজিট চারটি বিটের (অর্ধ বাইট; একটি 'নিবল'), এবং দুই থেকে এক বাইটের সাথে সুসংগত: সংখ্যার 0x3fসমস্ত বিট রয়েছে নিম্ন স্তনবৃন্ত মধ্যে সেট, এবং দুটি বিট উচ্চ নিচু সেট।

আপনিও দ্বিতীয় লাইনে অষ্টালে লিখতে পারেন:

printf("x=%d, y=%d\n", (codevalue & 0300) >> 6, (codevalue & 077));

এখানে, প্রতিটি ডিজিট তিনটি বিটের ব্লকের সাথে মিলে যায়। কিছু লোকের সাথে এটি ভাবতে সহজ হয়, যদিও আমি মনে করি এটি আজকাল বিরল।


আর একটি উদাহরণ হতে পারে "ম্যাজিক নম্বর" 0xDEADBEEF ব্যবহার। এই পোস্টটিকে দেখতে পারবেন stackoverflow.com/questions/5907614/0xdeadbeef-vs-null
Etsitpab Nioliv

45

আমি বিভিন্ন ঘাঁটি ব্যবহার করার প্রধান কারণ হ'ল আমি যখন বিটগুলি যত্ন করি।

এটি পড়া অনেক সহজ

int mask=0xFF;
byte bottom_byte = value & mask;

চেয়ে

int mask=255;
byte bottom_byte = value & mask;

বা চিত্র আরও জটিল কিছু

int mask=0xFF00FF00;
int top_bytes_by_word = value & mask;

তুলনা করা

int mask=4278255360; //can you say magic number!? 
int top_bytes_by_word = value & mask;

হেক্সের উদাহরণগুলির সাথে উদ্দেশ্যটি কী তা এখানে খুব স্পষ্ট কারণ হেক্স মূলত বাইনারিগুলির আরও একটি কমপ্যাক্ট ফর্ম ... বিপরীতে, বেস -10 (আমরা যা ব্যবহার করি) বাইনারি হিসাবে প্রায় ম্যাপ করে না।

0xFF = b11111111 = 255
0xFFFF = b1111111111111111 = 65536
0xF0F0 = b1111000011110000 = 61680

এছাড়াও কয়েকটি বেসে আপনি কয়েকটি ভাষায় ব্যবহার করতে পারেন। আপনি বাইনারি, হেক্স এবং দশমিক ব্যতীত অন্যান্য ঘাঁটিগুলির খুব কম ব্যবহার দেখতে পাবেন od


2
অক্টাল মোটেও বিরল নয়, 0 টি অক্টাল :) (দেখেছি স্ট্যাক এক্সচেঞ্জ নেটওয়ার্কের কোথাও এখন এটি খুঁজে পাওয়া যায় না)।
জারিত

2
@ এয়ারলজ: প্রচুর আঙ্গুলের লোক। :-)
ব্রায়ান ওকলে

3
26 x 2 + 10 = সমস্ত মূলধন এবং ছোট-বড় অক্ষর এবং সমস্ত সংখ্যা। আসলেই তা অস্বাভাবিক নয়। আমি বেস ৩ used ব্যবহার করেছেন, যা এটির ক্ষেত্রে কেবল সং-সংবেদনশীল সংস্করণ।
ড্যারাল হফম্যান

3
@ বাসাইল: এক ঘন্টাে minutes০ মিনিট এবং এক মিনিটে 60০ সেকেন্ড রয়েছে কারণ লোকেরা বেস -60 সিস্টেম ব্যবহার করছিল, অন্যভাবে নয়। আমি আশা করি আপনি বিশ্বাস করেন না যে প্রকৃতির এমন কিছু আছে যা বলে যে এক ঘন্টার মধ্যে অবশ্যই 60 মিনিট থাকতে হবে!
জোরেেন

1
হ্যাঁ, তারা তারাতে এটি পড়ে এবং তারা সময়-মাপার কারণে বেস -60 ব্যবহার করে। এক বছরে 360 দিন (= 6x60) সহ এটি বেস -60 এ সময় নির্ধারণ করার মতো পাগল নয়।
ytg

8

আপনি সম্ভবত জানেন যে কম্পিউটারগুলি বাইনারি ভিত্তিক - এটি বেস 2 2

বেস 2 এবং 4, 8 এবং 16 (এবং 2 এর সমান গুণক) এর মধ্যে রূপান্তর করা সহজ এবং এই অনুবাদটিকে উত্স কোডে রেখে দেওয়া সংখ্যার সাথে কাজ করার পক্ষে যুক্তিযুক্ত হতে পারে।

অ্যাসেম্বলি এবং সি এর মতো নিম্ন স্তরের ভাষার ক্ষেত্রে এটি প্রসেসর অপারেশনগুলিতে সরাসরি অনুবাদ করতে পারে (উদাহরণস্বরূপ বিভাগ এবং গুনের জন্য বিট শিফটিং), যার অর্থ এই সংখ্যাগুলি ব্যবহার করা আরও দ্রুত কোডের সাথে শেষ হয়।

অতিরিক্তভাবে, সমস্ত ক্রিয়াকলাপগুলি সংখ্যাসূচক ক্রিয়াকলাপ নয় - এমন বিট মানচিত্র রয়েছে যেখানে আপনাকে সরাসরি বিটগুলির সাথে ঝাঁকুনির প্রয়োজন হয় - বেস 2 বা এর বহুগুণগুলির একটিতে এটি করা অপারেশনটিকে আরও সহজ করে তোলে।

আপনি যদি আরও জানতে চান তবে আমি চার্লস পেটজোল্ডের কোড পড়ার পরামর্শ দিচ্ছি ।


3
সংকলক কোন অভিশাপ দেয় না। আপনার তালিকাভুক্ত বেসগুলির মধ্যে রূপান্তর করা সত্যিই সহজ, যদিও বেস 10 এর জন্য একটি সাধারণ (ধীর-ইশ) রূপান্তরটি বিশেষভাবে কঠিন নয়, এবং সংকলক নির্মাণের জন্য বেশিরভাগ ভাষা কার্যকর (আপনি এর জন্য সমাবেশ ব্যবহার করেন না) রূপান্তরগুলি তাদের স্ট্যান্ডার্ড লাইব্রেরিতে উপলভ্য, সুতরাং এটি সংযোজকগুলির জন্য কার্যকরভাবে বিনামূল্যে।

1
সি তে হেক্সাডেসিমাল ব্যবহার করা দ্রুত প্রোগ্রামগুলিতে অনুবাদ করে না। সংকলকটি আপনি কোন বেসটি ব্যবহার করেন তা বিবেচনা করে না।
চার্লস সালভিয়া

5
প্রোগ্রামটি কোন বেসে লেখা আছে তা নির্ধারণ করে না, সংকলক সংকলনের সময় বাইনারিতে এটি অনুবাদ করে। সমাবেশ নির্দেশাবলী অভিন্ন।
কার্ল বিলেফেল্ট

2
এন্টারপ্রাইজ কম্পিউটারগুলি আসলে একটি ট্রি-এনারি বিলের উপর ভিত্তি করে: সত্য, মিথ্যা এবং "ফাইলটি পাওয়া যায় নি"
মার্টিন বেকেট


4

উচ্চীকৃত প্রোগ্রামগুলির বাইরে 10, 16 বা 2 ব্যতীত অন্যান্য ঘাঁটি ব্যবহার করা খুব বিরল।

বেস 16 (হেক্সাডেসিমাল) কেবলমাত্র দরকারী কারণ বাইটের পুরো পরিসীমা (0-255) দুটি অঙ্কে উপস্থাপন করা যায় (0x00-0xFF), যা কাঁচা হেক্স-ডাম্প বা বাইনারি ডেটা দিয়ে কাজ করা অনেক সহজ করে তুলতে পারে। বিটওয়াইস অপারেটরগুলির সাথে বিট মাস্কগুলি ব্যবহার করার সময় হেক্সাডেসিমালও দরকারী, কারণ বাইট চিঠিপত্রের দুই-অঙ্ক পাঠযোগ্যতার সাথে সহায়তা করে।

খুব কমই, বেস 2 (বাইনারি) বিটওয়াইজ ক্রিয়াকলাপগুলির সাথেও ব্যবহার করা যেতে পারে তবে অনেক প্রোগ্রামিং ভাষা বেস -2 আক্ষরিক সমর্থন করে না এবং যাইহোক হেক্সাডেসিমাল অনেক বেশি সংক্ষিপ্ত এবং পাঠযোগ্য।

বেস -8 (অষ্টাল) কখনও কখনও ইউনিক্স ফাইল অনুমতিগুলির কারণেও ব্যবহৃত হয়। এটি ব্যতীত, উচ্চতর বিশেষজ্ঞ গাণিতিক প্রসঙ্গে 10 টির বাইরে অন্য বেসগুলি ব্যবহার করা বেশ বিরল।


অক্টাল প্রায়শই অক্ষর মান নির্দিষ্ট করতে এবং কখনও কখনও বাইনারি ডেটা ডাম্প করতে ব্যবহৃত হয়।
কালেব

3

অন্যান্য ঘাঁটি ব্যবহারের সবচেয়ে সাধারণ বৈধ কারণটি বেস 2 তে রূপান্তর করতে স্বাচ্ছন্দ্যের সাথে কাজ করে: আট বা ষোলের একটি সংক্ষিপ্ত টেবিল মুখস্থ করে কোনও ক্যালকুলেটর ব্যবহার না করে একটি বেস -8 বা একটি বেস -16 নম্বরটিকে বাইনারি রূপান্তর করা তুচ্ছ is সংখ্যা:

 0000 0     0001 1     0010 2     0011 3
 0100 4     0101 5     0110 6     0111 7

 1000 8     1001 9     1010 A     1011 B
 1100 C     1101 D     1110 E     1111 F

এটি একাধিক সম্ভাবনা খোলে:

  • যখন কোনও সংখ্যা অর্থবহ বাইনারি সংখ্যার সংমিশ্রণের প্রতিনিধিত্ব করে, আপনি কম্পিউটার ছাড়াই পৃথক উপাদানগুলি নির্ধারণ করতে পারেন। উদাহরণস্বরূপ, যদি কোনও 24-বিট নম্বর আরজিবিতে কোনও রঙের প্রতিনিধিত্ব করে তবে 0xFF00FFএটি ম্যাজেন্টা (লাল + নীল) বলা তুচ্ছ ; আপনার সাথে উপস্থাপন করা হলে টাস্কটি আরও শক্ত16711935
  • যখন কোনও সংখ্যা কিছুটা মাস্ক উপস্থাপন করে, তখন এটি দীর্ঘতর বাইনারি সংখ্যার চেয়ে কমপ্যাক্ট হেক্স নম্বর হিসাবে লিখতে আরও ব্যবহারিক
  • অষ্টাল সংখ্যা হিসাবে মুদ্রিত হওয়ার পরে কিছু আর্কিটেকচার তাদের বাইনারি কোডটি সহজেই পড়তে সহজ করে তোলে। PDP-11 হ'ল এটির একটি সিস্টেম: সর্বাধিক উল্লেখযোগ্য বিট আপনাকে 16-বিটগুলি থেকে 8-বিট অপারেশন বলতে দেয়; শেষ দুটি অষ্টাল গ্রুপ আপনাকে অপারেশনের সাথে জড়িত দুটি রেজিস্টারগুলিকে বলতে দেবে, ইত্যাদি। আমি বেশ কিছু লোককে জানতাম যারা PDP-11 বাইনারি কোডটি ডিসাইসেম্বলার ছাড়াই পর্দার বাইরে পড়তে পারে, তবে তাদের অষ্টাল সিস্টেমে মুদ্রণের জন্য মেশিন কোডের প্রয়োজন ছিল।

2

কম্পিউটারটি (বা আরও নির্ভুলভাবে সংকলক) আপনার উত্স কোডে আপনি কোন সংখ্যা বেস ব্যবহার করছেন তা সত্যিই যত্নশীল নয়। সর্বাধিক ব্যবহৃত প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি বেস 8 (অষ্টাল), 10 (দশমিক) এবং 16 (হেক্সাডেসিমাল) সরাসরি সমর্থন করে। কিছু বেস 2 (বাইনারি) সংখ্যার জন্য সরাসরি সমর্থন করে। বিশেষীকৃত ভাষাগুলি অন্যান্য সংখ্যা ঘাঁটিগুলিকেও সমর্থন করতে পারে। ("সরাসরি সমর্থন" দ্বারা, আমি বোঝাতে চাইছি যে তারা সোর্স কোডে নিজেই বিটশিটিং, গুণ, বিভাগ ইত্যাদির মতো গাণিতিক কৌশলগুলি অবলম্বন না করেই সেই বেসে অঙ্কগুলি প্রবেশের অনুমতি দেয় For উদাহরণস্বরূপ, সি তার সাথে বেস -১ supports সমর্থন করে0xনম্বর উপসর্গ এবং 0123456789ABCDEF এর নিয়মিত হেক্সাডেসিমাল ডিজিট সেট। এখন, এই জাতীয় কৌশলগুলি প্রসংখ্যায় সহজেই সংখ্যাটি বোঝার জন্য কার্যকর হতে পারে তবে যতক্ষণ আপনি এগুলি ছাড়াই একই সংখ্যাটি প্রকাশ করতে পারবেন ততক্ষণ - না করা - না করা কেবল একটি সুবিধা)

শেষ পর্যন্ত, এটি অনর্থক is আসুন আমরা আপনার নীচের মত একটি বিবৃতি আছে বলে যাক:

int n = 10;

উদ্দেশ্যটি হল একটি পূর্ণসংখ্যের পরিবর্তনশীল তৈরি করা এবং দশমিক সংখ্যা 10 দিয়ে এটি আরম্ভ করা কম্পিউটারটি কী দেখায়?

i  n  t     n     =     1  0  ;
69 6e 74 20 6e 20 3d 20 31 30 3b (ASCII, hex)

সংকলকটি এটিকে টোকানাইজ করবে এবং বুঝতে পারবে যে আপনি intনামের সাথে একটি প্রকারের পরিবর্তনশীল ঘোষণা করছেন nএবং এটি কোনও প্রাথমিক মান নির্ধারণ করবেন। তবে সেই মান কী?

কম্পিউটারে, এবং উপেক্ষা বাইট ক্রম এবং প্রান্তিককরণ সমস্যার পরিবর্তনশীল প্রাথমিক মান জন্য ইনপুট হয় 0x31 0x30। এর অর্থ কি প্রাথমিক মান 0x3130 (বেস 10 তে 12592)? অবশ্যই না. ল্যাঙ্গুয়েজ পার্সার অবশ্যই ব্যবহৃত অক্ষর এনকোডিংয়ে ফাইলটি পড়তে হবে, সুতরাং এটি 1 0বিবৃতি টার্মিনেটরের পরে পড়ে । যেহেতু এই ভাষার বেস 10 অনুমান করা হয়েছে, এটি (পিছনের দিকে) "0 টি, 1 দশক, শেষ" হিসাবে পড়ে। অর্থাৎ 10 দশমিক একটি মান of

আমরা যদি হেক্সাডেসিমালে কোনও মান নির্দিষ্ট করে থাকি এবং আমাদের ভাষা 0xনীচের মানটি হেক্সাডেসিমালে রয়েছে তা নির্দিষ্ট করতে ব্যবহার করে, তবে আমরা নিম্নলিখিতটি পাই:

i  n  t     n     =     0  x  1  0  ;
69 6e 74 20 6e 20 3d 20 30 78 31 30 3b (ASCII, hex)

0xসংকলকটি (0x30 0x78) দেখে এবং এটি বেস -16 উপসর্গ হিসাবে স্বীকৃতি দেয়, সুতরাং এটি অনুসরণ করে একটি বৈধ বেস -16 সংখ্যা সন্ধান করে। বিবৃতি টার্মিনেটর অবধি এটি পড়ে 10। এটি 0 "বেশী", 1 "ষোড়শ" তে অনুবাদ করে, যা বেস 10 এ 16 এর বাইরে চলে আসে বা বেস 2 তে 00010000 করে Or অথবা অন্যথায় আপনি এটি উপস্থাপন করতে পছন্দ করেন।

উভয় ক্ষেত্রেই, এবং সরলতার জন্য অপ্টিমাইজেশন উপেক্ষা করে, সংকলক একটি intধরণের ভেরিয়েবলের মান ধরে রাখার জন্য পর্যাপ্ত স্টোরেজ বরাদ্দ করে এবং সেখানে উত্স কোড থেকে পড়ার মানটিকে কিছু অস্থায়ী হোল্ডিং ভেরিয়েবলের মধ্যে রাখে। তারপরে এটি (সম্ভবত অনেক পরে) অবজেক্ট কোড ফাইলে ফলাফল বাইনারি মান লিখবে।

যেমন আপনি দেখতে পাচ্ছেন, উত্স কোডে আপনি যেভাবে সংখ্যাসূচক মান লিখছেন তা সম্পূর্ণরূপে অসম্পূর্ণ। এটা তোলে পারে একটি আছে খুব সামান্য কম্পাইল বার থেকে কার্যকর, কিন্তু আমি যে কল্পনা হবে (আবার, এই ধরনের অপারেটিং সিস্টেমের মাধ্যমে ডিস্ক ক্যাশে যেমন অপ্টিমাইজেশন উপেক্ষা) ডিস্কের আবর্তিত থালা, ডিস্ক এক্সেস বার তথ্য বাস দুর্ঘটনায় প্রায় এলোমেলো অবাধ্যতা ভালো জিনিস ইত্যাদি আরও অনেক বেশি প্রভাব ফেলে।

নীচের লাইন: এটি সম্পর্কে চিন্তা করবেন না। আপনার পছন্দমতো প্রোগ্রামিং ভাষাটি সমর্থন করে এবং নম্বরটি কীভাবে ব্যবহৃত হবে এবং / বা পড়বে তার জন্য এটি বোধগম্য একটি বেসে সংখ্যাগুলি লিখুন। সংখ্যার উত্স কোডে কোন নম্বর বেসটি ব্যবহার করবেন সে সম্পর্কে চালাক হয়ে সংকলনের সময়ে আপনি পুনরুদ্ধার হওয়ার চেয়ে আপনি এই উত্তরটি পড়তে অনেক বেশি সময় ব্যয় করেছেন। ;)


1

যে কেউ কেন বেস 10 ব্যতীত অন্য একটি বেসে প্রোগ্রাম নম্বরগুলিতে তাদের পথ ছাড়বে।

এখানে কিছু কারণ যা ইতিমধ্যে প্রদর্শিত হয়নি ...

x00 - কিছু ওএস এবং হার্ডওয়্যার ডিভাইসের এপিআইগুলি আর্গুমেন্টগুলি হেক্স / বাইনারি হওয়ার আশা করে। আপনি যখন এই জাতীয় এপিআইয়ের কোড করেন, তখন একই ফর্ম্যাটে সংখ্যাগুলি ব্যবহার করা আরও সহজ যা এপিআই আশা করে এটি বিভিন্ন ঘাঁটির মধ্যে রূপান্তর না করে পরিবর্তিত হয়। উদাহরণস্বরূপ, কোনও সার্ভারে বাইট বার্তার শেষ প্রেরণ বা কোনও যোগাযোগ চ্যানেলের সংযোগ বন্ধ করার জন্য একটি বার্তা প্রেরণ।

x01 - আপনি আপনার অ্যাপ্লিকেশনটি কীবোর্ড সাইন (\ u00a9) এর মতো নির্দিষ্ট কীবোর্ডগুলিতে উপলব্ধ অক্ষরগুলি উপস্থাপন করতে চাইতে পারেন।

x02 - বিভিন্ন সংস্কৃতি সেটিংস জুড়ে কিছু ধ্রুবক / আক্ষরিক অবিচ্ছিন্ন থাকার জন্য (বিশেষত) সোর্স কোড / ফাইলগুলি যখন স্থানীয় স্থানীয় সেটিংস সহ বিকাশকারীদের মধ্যে সরানো হয়।

x03 - তাদের কোডটিকে বিভ্রান্তিকর এবং জটিল দেখানোর জন্য - ভাল জিনিস হ'ল সি # অক্টাল ধ্রুবককে সমর্থন করে না!


1

মূল সমস্যাটি যুক্তিযুক্ত উপায়ে কম্পিউটার আকারের একক শব্দের প্রতিনিধিত্ব করছে। 6502 ছিল একটি 8 বিট প্রসেসর। 4004 ছিল 4 বিট প্রসেসর।

4 বা 8 বিট সংখ্যার সাথে ডিল করার সময় দুর্দান্ত কাজ করে। একটি 4 বিট সংখ্যা একটি একক হেক্সাডেসিমাল অক্ষর। একটি 8 বিট সংখ্যা (একটি বাইট) দুটি হেক্স অঙ্ক। 2 মাপের শব্দের শক্তি সম্পন্ন সিস্টেমগুলি আজ দেখা যায় সাধারণত দেখা স্ট্যান্ডার্ড - 16 বিট, 32 বিট, 64 বিট। এই সবগুলি 4 টি দিয়ে ভাগ করে সুন্দরভাবে হেক্সাডেসিমাল হিসাবে উপস্থাপনের জন্য।

অক্টাল (বেস 8) এমন সিস্টেমে ব্যবহৃত হত যেখানে শব্দের আকার 12, 24 বা 36 ছিল। এই শব্দগুলি হেক্সাডেসিমালের সীমিত পরিসরের চেয়ে অক্টেটগুলি ব্যবহার করে আরও সহজেই প্রতিনিধিত্ব করা হত (হ্যাঁ, এগুলি 4 টিও বিভক্ত হয়)।

স্পষ্টতই বেস 8 নম্বরটি ব্যবহার করে ব্যয় সাশ্রয় ছিল। বিসিডিতে 12 বিটের প্রতিনিধিত্ব করে, প্রথম অঙ্কটি কেবল 0-4 হতে পারে তবে দ্বিতীয়, তৃতীয় এবং চতুর্থ 0-9 হতে পারে। যদি এটি হেক্স হিসাবে করা হয়ে থাকে তবে একটির 3 টি হেক্স অক্ষর থাকে তবে প্রত্যেকটির 16 টিরও সম্ভাব্য মান থাকে। নিক্সির টিউব উত্পাদন করা সস্তা ছিল যে কেবল 0-9 (বিসিডির জন্য অতিরিক্ত যুক্তি সহ) বা হেক্সাডেসিমালের জন্য 0-এফ থাকা একটির চেয়ে 0-7 ছিল।

আজও অক্সটালটি ইউনিক্স ফাইলের অনুমতিগুলির সাথে দেখা হয় (755, 644) যেখানে মালিক, গোষ্ঠী এবং বিশ্বের প্রত্যেকের কাছে 3 টি বিট অনুমতিগুলি উপস্থাপন করে।


গণিতের জগতে, কেউ কেউ মাঝে মাঝে বিভিন্ন ঘাঁটিযুক্ত কিছু বিজোড় কাজ করে। উদাহরণস্বরূপ, প্রকল্পের এলিউর 396 থেকে দুর্বল গুডস্টেইন ক্রম ... বা প্যালিনড্রমিক সংখ্যার সাথে সহজ কিছু । সেখানে বেস মধ্যে একটি সংখ্যা সম্পত্তি এন করে একটি নম্বর যার একটি একাধিক 1 - এন তার ডিজিটের একটি একাধিক পর্যন্ত যোগফল হবে 1 - এন । ফারটারমোর, যদি এন - 1 একটি নিখুঁত বর্গ হয়, এই সম্পত্তিটি স্কয়ারটি ( এন - 1 ) এর জন্যও বিদ্যমান । নির্দিষ্ট গাণিতিক সমস্যার ক্ষেত্রে এর কিছু প্রয়োগ রয়েছে।


1
অক্টাল ছিল কারণ পিডিপিতে 9/18 বিট বাইট ছিল, একটি অষ্টাল সংখ্যা 3 বিটকে উপস্থাপন করে তাই যদি আপনার বাইট 3 দ্বারা বিভাজ্য হয় তবে এটি অনেক অর্থবোধ করে
মার্টিন বেকেট

1
অক্টাল কিছু 16-বিট সিস্টেমেও ব্যবহৃত হত (বিশেষত পিডিপি -11), কারণ 15 - সাইন বিট ব্যতীত বিটের সংখ্যা 3 কে সুন্দরভাবে বিভক্ত করে (এটি উদাহরণস্বরূপ, মূল ইউনিক্স অপারেটিং সিস্টেম জুড়ে ব্যবহৃত হয়েছিল (উদাহরণস্বরূপ, "ওড" বাইনারি ফাইলগুলি ডাম্প করার মানক সরঞ্জাম, এবং এর ডিফল্ট ফর্ম্যাটটি কেবল অনুমতিগুলির জন্য নয়, 8-বিট হেক্সের চেয়ে 16-বিট অকটাল)। এটি প্রাসঙ্গিকও হতে পারে যে PDP-11 নির্দেশিকা সেটটিতে দুটি 6-বিট অপারেন্ড ক্ষেত্র ছিল।
র্যান্ডম 832

অক্টালও ব্যবহৃত হত কারণ এটি সময়ে প্রযুক্তিতে প্রদর্শিত হতে পারে। নেক্সি টিউব, কেউ? বা অন্যান্য 0-9 প্রদর্শন? এএফ প্রদর্শনগুলি প্রদর্শিত হতে কিছুটা সময় নিয়েছিল।
জেরেমি জে স্টারচার

1

আর্থিক শিল্পে, একটি শনাক্তকারী স্কিম রয়েছে যা কার্যকরভাবে 36 ভিত্তিক । এটি 0-9 নম্বর এবং BZ অক্ষর ব্যবহার করে 0-35 মূল্যবান সংখ্যাগুলি উপস্থাপন করে। এটি কোনও স্বতন্ত্র নাম উত্পন্ন হতে বাধা দিতে স্বরগুলি এড়িয়ে যায়।

এটি নিখুঁত নয়। একটা সময় ছিল যখন একটি দুর্ভাগ্য সংস্থার আইডি ছিল B000BZ


1

কারণ # 1: কারণ সার্কিট স্তরে সমস্ত সংখ্যা বেস -২ তে উপস্থাপিত হয় (বৈদ্যুতিক সুইচ চালু বা বন্ধ)। কারণ # 2: কারণ প্রকৃত সার্কিটের চেয়ে এক পর্যায়ে বেশি, বিটগুলি বাইটে বিভক্ত করা হয় এবং বাইটগুলি সহজেই দুটি হেক্সাডেসিমাল অঙ্ক হিসাবে উপস্থাপন করা যায়, যখন এটির সমস্ত সম্ভাব্য মান উপস্থাপন করতে 3 দশমিক অঙ্ক (এবং কিছু বৈধতা) লাগবে বাইট।

সুতরাং, আপনি যদি এই স্তরে কাজ করছেন (বা তাদের কিছুটা পরিচালিত পরিবেশে প্রায় অনুমান করছেন), তবে দশমিকের চেয়ে বাইনারি বা হেক্সাডেসিমালে কাজ করা সহজ। আপনি যে পরিস্থিতিতে এই কাজটি করবেন তা বিভিন্ন রকমের, তবে সাধারণত কখনও এমন পরিস্থিতি হয় না যেখানে আপনার কেবল বুনিয়াদি গণিতের প্রয়োজন হয়।


1

একটি অঞ্চল যেখানে বেস 16 (হেক্সাডেসিমাল) সংখ্যাগুলি প্রায়শই ব্যবহৃত হয় তা রঙ নির্দিষ্টকরণে হয় বিশেষত ওয়েবে এইচটিএমএল / সিএসএস ব্যবহার করার সময়। ডিজিটাল ডিসপ্লেগুলিতে আমরা যে রঙগুলি ব্যবহার করি সেগুলি 3 "বেস" রঙের (আরজিবি - লাল, সবুজ, নীল) জন্য 3 তীব্র মানের মানের সংমিশ্রণ ব্যবহার করে নির্দিষ্ট করা হয় যা 16 মিলিয়ন ডিসপ্লেযোগ্য রঙগুলির (24-বিট রঙ ব্যবহার করে) তৈরি করতে একসাথে মিশ্রিত হয় )।

উদাহরণস্বরূপ, হেক্স পূর্ণ তীব্রতা সবুজ হবে 0x00ff00এবং 65280দশমিক হবে। এখন আপনার মস্তকে এমন একটি রঙ মিশ্রিত করার চেষ্টা করুন যা "সমানভাবে" লাল এবং নীল সমান অংশ থাকে, একটি অর্ধগুণে বলে, একটি সুন্দর বেগুনি তৈরি করতে :) হেক্সে এটি কেবল এমনভাবে লেখা হবে 0x800080যখন এর দশমিক মান হবে 8388736। এটি এমনকি সহজ যখন ধূসর ছায়া গো সঙ্গে কাজ পায় - 50% ধূসর হয় 0x808080(হেক্স) এবং 8421504(দশমিক), 75% এর 0xC0C0C012632256, ইত্যাদি।

হেক্স ব্যবহার করা অনেক বেশি স্বজ্ঞাত এবং যে কোনও রঙের এই ব্যবহারের সাথে পরিচিত সে সাথে সাথে কেবলমাত্র হেক্স মানটি দেখে রঙটি "অনুমান" করতে সক্ষম হবে। একই রঙটি একাধিকবার ব্যবহার করা প্রয়োজন (যা সাধারণত এটি হয়) এটি ব্যবহার করার প্রবণতাও অনেক কম।

পাগল পরিমাণ হেক্স ব্যবহারের জন্য কোনও ওয়েব পৃষ্ঠা (এবং বিশেষত সিএসএস) দেখুন: ডি

দ্রষ্টব্য: সিএসএসে হেক্স মানগুলি একটি #উপসর্গ ব্যবহার করে লেখা হয় , উদাহরণস্বরূপ: #00ff00সবুজ রঙের জন্য এবং কখনও কখনও কেবল তিনটি সংখ্যায় ছোট করে দেওয়া হয় যেমন #0f0সবুজ green


0

কিছু অ্যালগরিদমের জন্য, বেস 2 অন্য যে কোনও কিছুর চেয়ে বেশি জ্ঞান অর্জন করে। উদাহরণস্বরূপ, আপনি বরং একটি বাইনারি গাছ, বা একটি 10-অ্যারি গাছকে অতিক্রম করার জন্য কোনও ফাংশন লিখবেন?

তবে, প্রায়শই বেস 2 ব্যবহার করা হয় কারণ কম্পিউটারগুলি প্রায় সর্বজনীনভাবে তাদের সংখ্যা উপস্থাপন করে। এই যে মানে:

  • বেস 2 তে অনেকগুলি অপারেশন আরও দক্ষ
    • 2 এর গুণক, বিভাগ এবং মডুলো শক্তিগুলি সাধারণ বিভাগের চেয়ে অনেক দ্রুত
    • পতাকা এবং ছোট মানগুলি বৃহত্তর সংখ্যার বাইনারি অঙ্ক হিসাবে আরও দক্ষতার সাথে সঞ্চয়, পুনরুদ্ধার এবং হেরফের করা যায়।
  • যে অপারেশনগুলি ডেটা ফাইল এবং নেটওয়ার্ক ডেটা স্ট্রিমগুলি পড়তে, লিখতে এবং হস্তান্তর করে তাদের অবশ্যই বাইনারি সংখ্যা হিসাবে প্রতিনিধিত্ব করা হয় তা সরাসরি মোকাবেলা করতে হবে।

এছাড়াও, সর্বদা বিরল প্রয়োগ রয়েছে যা সহজাতভাবে একটি বিজোড় বেস প্রয়োজন যা 2 বা 10 নাও হতে পারে।


2
অবশ্যই আমি একটি 10-অ্যারি গাছ ব্যবহার করতাম। আপনি এই অদ্ভুত 2চরিত্রটি কি ব্যবহার করছেন?
কোডসইনচাওস

0

এটি সত্যই অগ্রাধিকার, যদি কোনও কারণে আপনি পলিড্যাক্টলি পেয়েছেন এবং 11 টি আঙ্গুলগুলি রেখেছেন বা আপনার পায়ের আঙ্গুলের সাথে গণনা করতে পছন্দ করেন যাতে আপনি বেস 20 এ কাজ করতে পছন্দ করেন এটি খাঁটিভাবে আপনার হাতে। তবে বুঝতে পারেন যে সার্বজনীনতার বিষয়ে আমাদের বেশিরভাগ লোককে যে প্রতিদিন বিট এবং বাইট নিয়ে কাজ করতে হয় তা যদি আমরা বেস 19-এ বিট ম্যানিপুলেশন করছে এমন কিছু পেয়েছি তবে তা সত্যিই টিক হবে।

ভিত্তি জন্য কারণ x

বেস 10 - আমাদের সমস্ত সামগ্রীর মডেল কারণ আমাদের কাছে 10 টি গণনা অঙ্ক রয়েছে (পাগুলি অদ্ভুত এবং গন্ধযুক্ত তাই আমরা সেগুলি ব্যবহার করি না)।

বেস 2 - কম্পিউটারগুলি বিটগুলির জন্য এটি ব্যবহার করে (চালু / বন্ধ) এটি গেট / ট্রানজিস্টর / ক্যাপাসিটার দ্বারা প্রচারযোগ্য পাঠযোগ্য ভোল্টেজ স্তরের সাথে সম্পর্কিত।

বেস 8 - পুরাতন, যখন কম্পিউটারগুলি বিশাল বিশাল ছিল না (বা পিছনে যখন তারা স্থান অনুসারী ছিল) এটি কোনও কিছুর জন্য বা অন্য কোনও ক্ষেত্রে ভাল ছিল (আমি এটি কিছুটা পছন্দ করি না)

বেস 16 - বিট ম্যানিপুলেশনের জন্য বাইটের উপরের এবং নীচের নীবলগুলি দেখানোর জন্য ভাল। এম্বেড করা / এফপিগা / হার্ডওয়্যার ওয়ার্ল্ডে এটি দুর্দান্ত উপকারী।

কম্পিউটারগুলিতে সাধারণ ভিত্তি

অগ্রাধিকারের সাথে যেতে, আমি আপনাকে বলতে পারি যে হ্যাক্স আরজিবি মানের যে রঙটি "অন" হয় তা আমাকে কীভাবে দেওয়া হয়, ফলস্বরূপ এটি হার্ডওয়ারের একক প্রান্তে উপস্থাপন করা যায় এবং তারপরে কিছু শিফট দিয়ে আমাকে ফিরিয়ে দেওয়া যায় can ইজি-প্যাসি, 1 টি জটিল রঙ = 1 ডেটা পয়েন্ট যা সীমিত মেমরির সাথে বড় ইমেজ প্রসেসিংয়ের জন্য দুর্দান্ত। এটি একটি বেস 10 এর উপস্থাপনার সাথে তুলনা করুন, আপনি এগুলি সবগুলি যুক্ত করতে পারেন এবং একটি সংখ্যায় সংরক্ষণ করতে পারেন তবে কোনটি সংখ্যাটি, বা সম্ভবত আর সময় 10000, জি 100, এবং বি এর নিজস্ব স্থান, এটি প্রচুর গণিতের ক্রিয়াকলাপ of , সাধারণত গুণের পরিবর্তে শিফটের চেয়ে বেশি চক্র লাগে, সুতরাং আপনার শেষ টুকরোটি প্রক্রিয়াজাত হওয়ার আগে আপনার পরবর্তী ডেটা টুকরোটি ইতিমধ্যে সারিতে রয়েছে, ওফ, এখন চলে গেছে।

কখনও কখনও বেস 2, 8 বা 16 এ কাজ করা আরও ভাল most বেশিরভাগ মেশিনের সাহায্যে 2 দ্বারা গুণিত করা কেবল কিছুটা স্থানান্তরিত হয়, সেগুলি দ্রুত গতিযুক্ত, 2 দ্বারা বিভক্ত হওয়ার সাথে একই।

বিট টুইডলিংয়ের ধারণার উপরে আরও ব্যাখ্যা করা। এম্বেড থাকা পরিবেশে কাজ করার সময় প্রচুর পরিমাণে আমার প্রয়োজন হয় যা কিছু লাইট, সুইচ বা অন্য কোনও রেজিস্টার ম্যাপযুক্ত আইটেম অ্যাক্সেস করার দরকার পড়ে।

এক্ষেত্রে একটি সম্পূর্ণ চর, বাইট বা প্রতিটি স্যুইচ-এর জন্য নির্ধারণ করা উভয়ই অকার্যকর এবং নির্বোধ হবে, একটি স্যুইচ বা লাইটের 2 পজিশন রয়েছে - চালু এবং বন্ধ - কেন আমি 256 পজিশন বা 2 ^ 16 অবধি এমন কিছু বরাদ্দ করব? পজিশন ইত্যাদি অ্যারেতে প্রতিটি আলো একক শব্দ / নিবন্ধনে 1 বিট ফিট 8 বা 16 বা 32 বা 64 বা 128 (আপনার ডেটাটাইপের প্রস্থ) হতে পারে। স্থান দক্ষতা প্রয়োজন এবং বরং স্বাগত।

আরজিবি ডেটা হ্যান্ডল করার মতো প্রচুর সংকেত ডেটা - জিপিএস, অডিও, এসকিআই ইত্যাদি ইত্যাদির জন্য প্রোগ্রামিংয়ে 2 base n বেসের যে কোনও কিছু ব্যবহার করা হেক্স, বাইনারি এবং অষ্টালে অনেক সহজ, যেহেতু এটি মেশিনে উপস্থাপিত হয় এবং একটি কী উপস্থাপন করা হচ্ছে এবং কীভাবে এটি ব্যবহার করবেন তা আরও সহজেই নির্ধারণ করুন।

স্ট্রাগ বেস ব্যবহার করা হচ্ছে

আপনি যদি এটির জন্য কোড না করেন তবে কোনও দক্ষতা নেই। আপনি বেস 11 চান, আপনি এটির জন্য একটি ডেটা-টাইপ সেট আপ করতে হবে এবং ব্যবহারকারীর প্রতিনিধিত্ব পরিচালনা করতে কোনও অপারেটরকে ওভারলোড করতে হবে। আমি কোনও কারণ দেখছি না কেন একটি সিস্টেম 5 আইটেম ধারণ করে, এবং কেবল 5 টি আইটেমের গুণককে পাঁচটি আইটেম গণিতে রূপান্তরিত করা দরকার। এবং আরও, আপনি আরও ভাল প্রার্থনা করতে পারেন যে, যার ভিত্তিতে 271 বেসের জন্য তাদের কোড লিখার সিদ্ধান্ত নিয়েছে এটি ভালভাবে নথিভুক্ত করেছে বা বেস 271 তৈরির তুলনায় আপনি এটি বুঝতে আরও বেশি সময় ব্যয় করতে পারেন কারণ সমস্ত আইটেম 271 এর একাধিক।


0

কম্পিউটারগুলির প্রাচীন দিনগুলিতে, আমাদের বেশ কয়েকটি প্রদর্শন ছিল যা 0-9 অঙ্কগুলি প্রদর্শন করতে পারে, তবে আমাদের এখনও এএফ নেই।

http://ad7zj.net/kd7lmo/images/ground_nixie_front.jpg এর একটি উদাহরণ ...

অক্টাল এই প্রদর্শনগুলির উপর দুর্দান্তভাবে ফিট করে এবং বাইনারি বা দশমিকের চেয়ে সহজ ছিল।


0

আমি অবাক হলাম অন্যান্য উত্তরগুলির সকলের বিকল্প বেসগুলির জন্য কম্পিউটিংয়ে দুটি খুব সাধারণ ব্যবহার উল্লেখ করা হয়নি:

  1. এনকোডিং : উদাহরণস্বরূপ বেস 64 এনকোডিং অত্যন্ত সাধারণ। এনকোডিং কেবল বাইটের একটি সিরিজকে একটি বৃহত বাইনারি (বেস -২) সংখ্যা হিসাবে ব্যাখ্যা করে এবং সেই সংখ্যাটিকে ASCII সংখ্যা দ্বারা উপস্থাপিত একটি বেস 64 নম্বরে রূপান্তর করে।
  2. সংক্ষেপণ : প্রতিনিধিত্ব সংক্ষিপ্ত করার জন্য প্রায়শই বৃহত্তর বেসে বাইনারি, দশমিক বা হেক্স নম্বর উপস্থাপন করা বাঞ্ছনীয়। উদাহরণস্বরূপ, বিট.লির মতো সমস্ত বিট সংক্ষিপ্তকারীরা এটি করছে। অথবা আপনি কোনও ইউআরএল ব্যবহারের জন্য কোনও জিইউডি সংক্ষিপ্ত করতে এটি করতে পারেন।

    - 821F6321-881B-4492-8F84-942186DF059B (base-16 guid) 
    becomes
    - RRIDHW463YD8YXX7MIDI (base-36)
    - 3UFmaWDjj9lifYyuT0 (base-62)
    
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.