খাঁটি গণিতের পটভূমি থাকা, আগ্রহী যে কারও পক্ষে এটি কিছুটা বেশি গাণিতিক।
যদি আমরা 8 বিট স্বাক্ষরিত এবং স্বাক্ষরবিহীন পূর্ণ পূর্ণসংখ্যার সাথে শুরু করি, তবে আমাদের কাছে যা আছে তা মূলত পূর্ণসংখ্যা 256, যতদূর যোগ এবং গুণনের বিষয়, 2 এর পরিপূরকটি নেতিবাচক পূর্ণসংখ্যার প্রতিনিধিত্ব করতে ব্যবহৃত হয় (এবং প্রতিটি আধুনিক প্রসেসর এটি এভাবে করে) ।
জিনিস দুটি যেখানে পৃথক: একটি তুলনা অপারেশন। এক অর্থে, পূর্ণসংখ্যার মডুলো 256 সেরা সংখ্যার বৃত্ত হিসাবে বিবেচিত হয় (যেমন পুরানো ধাঁচের এনালগ ক্লকফেসে পূর্ণসংখ্যা মডুলো 12 করা)। সংখ্যার তুলনা (x x y) অর্থবহ করার জন্য, আমাদের সিদ্ধান্ত নিতে হবে যে সংখ্যাগুলি অন্যের তুলনায় কম। গণিতজ্ঞের দৃষ্টিকোণ থেকে আমরা 256 পূর্ণসংখ্যার মডুলোটি 256 কোনওভাবে সমস্ত পূর্ণসংখ্যার সেটে এম্বেড করতে চাই। 8 বিট পূর্ণসংখ্যার মানচিত্র তৈরি করা যার বাইনারি উপস্থাপনাটি পূর্ণসংখ্য 0 এর সমস্ত শূন্য হয় তা করণীয় স্পষ্ট। এরপরে আমরা অন্যদের মানচিত্রের দিকে এগিয়ে যেতে পারি যাতে '0 + 1' (একটি রেজিস্টার শূন্যের ফলাফল, কুঠার বলতে, এবং এটি 'ইনক কুড়াল' এর মাধ্যমে একের সাথে বাড়ানোর ফলে) পূর্ণসংখ্য 1 এ যায় এবং এইভাবেই। আমরা -1 দিয়ে একই কাজ করতে পারি, উদাহরণস্বরূপ পূর্ণসংখ্যার সাথে '0-1' ম্যাপিং এবং '0-1-1' পূর্ণসংখ্যা -2। আমাদের অবশ্যই নিশ্চিত করতে হবে যে এই এম্বেডিংটি একটি ফাংশন, সুতরাং দুটি পূর্ণসংখ্যার সাথে একটি একক 8 বিট পূর্ণসংখ্যার মানচিত্র তৈরি করতে পারে না। যেমন, এর অর্থ হ'ল আমরা যদি সমস্ত সংখ্যার পূর্ণসংখ্যার সেটে মানচিত্র করি তবে 0 0 এর সাথে কিছু কম 0 এবং কিছুটা 0 এর চেয়ে বেশি হবে 8 8 বিট পূর্ণসংখ্যার সাথে এটি করার জন্য প্রয়োজনীয়ভাবে 255 উপায় রয়েছে (অনুযায়ী আপনি সর্বনিম্ন 0 থেকে -255 পর্যন্ত কী চান তা অবধি)। তারপরে আপনি '0 <y - x' এর ক্ষেত্রে 'x <y' সংজ্ঞা দিতে পারেন।
দুটি সাধারণ ব্যবহারের ক্ষেত্রে রয়েছে, যার জন্য হার্ডওয়্যার সমর্থনটি বোধগম্য: সমস্ত ননজারো পূর্ণসংখ্যার সাথে 0 এর চেয়ে বেশি এবং একটি প্রায় 50/50 বিভাজন সহ 0 অন্য সমস্ত সম্ভাবনা সহজেই একটি অতিরিক্ত 'অ্যাডের মাধ্যমে সংখ্যার অনুবাদ করে অনুকরণ করা হয় are এবং সাব 'অপারেশনগুলির আগে, এবং এর প্রয়োজনীয়তা এতটা বিরল যে আমি আধুনিক সফ্টওয়্যারটিতে স্পষ্ট উদাহরণ হিসাবে ভাবতে পারি না (যেহেতু আপনি কেবল একটি বৃহত্তর ম্যান্টিসার সাথে কাজ করতে পারেন, 16 বিট বলুন)।
অন্য সমস্যাটি হ'ল 16 বিট ইন্টিজারের স্পেসে 8 বিট ইন্টিজার ম্যাপিং। -1 যায় -1 এ? 0xFF -1 প্রতিনিধিত্ব করে বোঝানো হলে আপনি এটি চান। এই ক্ষেত্রে, সাইন-প্রসারিত করণীয় বোধগম্য জিনিস, যাতে 0xFF 0xFFFF এ যায়। অন্যদিকে, যদি 0xFF 255 প্রতিনিধিত্ব করে বোঝানো হয়, তবে আপনি এটি 0xFFFF এর পরিবর্তে 0x00FF এ 255 এ ম্যাপ করতে চান।
এটি 'শিফট' এবং 'গাণিতিক শিফট' অপারেশনের মধ্যেও পার্থক্য।
শেষ পর্যন্ত, তবে এটি নীচে নেমে আসে যে সফ্টওয়্যারটিতে ইন্টের পূর্ণসংখ্যা হয় না, তবে বাইনারিতে উপস্থাপনা হয় এবং কেবলমাত্র কিছুকেই প্রতিনিধিত্ব করা যায়। হার্ডওয়্যার ডিজাইন করার সময়, হার্ডওয়্যারে স্থানীয়ভাবে কোনটি করতে হবে তা বেছে নিতে হবে। যেহেতু 2 এর পরিপূরক সংযোজন এবং গুণক ক্রিয়াকলাপগুলি অভিন্ন, তাই এইভাবে নেতিবাচক পূর্ণসংখ্যার প্রতিনিধিত্ব করা বোধগম্য। তারপরে এটি কেবল অপারেশনগুলির বিষয় যা আপনার বাইনারি প্রতিনিধিত্বগুলি বোঝাতে বোঝায় কোনটি পূর্ণসংখ্যার উপর নির্ভর করে।