কম্পিউটার

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

কম্পিউটার সম্পর্কে আমরা প্রথম যা শিখি তার মধ্যে একটি হল তারা শুধুমাত্র 0 এবং 1s বোঝে , অথবাবিট .

আমরা মানুষ, অন্যদিকে, দশমিক পদ্ধতির মাধ্যমে সংখ্যার সাথে যোগাযোগ করি। এই সিস্টেম ধনাত্মক বা ঋণাত্মক সংখ্যা বোঝাতে প্লাস এবং বিয়োগ চিহ্ন (+ এবং -) সহ 0 থেকে 9 পর্যন্ত সংখ্যা ব্যবহার করে।

যেহেতু কম্পিউটার শুধুমাত্র দুটি সংখ্যা ব্যবহার করতে পারে – 0 এবং 1 - আগের দিনের প্রকৌশলী এবং গণিতবিদরা নেতিবাচক সংখ্যাগুলিকে উপস্থাপন করার জন্য এবং তাদের সাথে পাটিগণিত করার জন্য চতুর কৌশলগুলি ডিজাইন করেছিলেন। আসুন সেই কৌশলগুলির সৌন্দর্য অন্বেষণ করি।

প্রথম, কম্পিউটার কীভাবে কাজ করে তার কিছু পটভূমি

সফ্টওয়্যার, ছবি, টেক্সট, ভিডিও, সংখ্যা এবং এর মধ্যে থাকা সবকিছুই আমাদের কম্পিউটারের সর্বনিম্ন স্তরে 0 এবং 1 সেকেন্ড।

ইমেজ, টেক্সট, ভিডিও এবং সংখ্যার জন্য, আমাদের এনকোডিং স্কিম আছে যেগুলো স্থির করে যে এই জিনিসগুলি কীভাবে 0 এবং 1 সেকেন্ডে যাবে। উদাহরণস্বরূপ, পাঠ্যের জন্য ASCII এবং ইউনিকোড।

আমরা যে সফ্টওয়্যার প্রোগ্রামগুলি কোড করি সেগুলি কম্পাইলার এবং অ্যাসেম্বলারের মাধ্যমে 0s এবং 1s এ পাই। 0s এবং 1s-এর যে সেটগুলি মেশিন কোড (বা মেশিন নির্দেশনা) নামে পরিচিত তা প্রসেসর চালানোর আগে প্রথমে আমাদের কম্পিউটারের প্রধান মেমরিতে (RAM) সংরক্ষণ করা হয়।

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

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

অপকোড পরবর্তী পদক্ষেপের সিদ্ধান্ত নেয় যা সম্পাদন করতে হবে যেমন ADD (সংযোজন), JMP (জাম্প), INC (বৃদ্ধি) ইত্যাদি। অপারেন্ডগুলি হল সেই মানগুলি (বা মেমরির অবস্থানগুলি) যার উপর সেই অপারেশনটি করা হবে৷

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

উদাহরণস্বরূপ, সমাবেশ কোড ADD eax, 42 অ্যাসেম্বলার দ্বারা প্রথমে মেশিন কোডে (0s এবং 1s) পরিণত হয়। তারপর ফেচ-ডিকোড-এক্সিকিউট চক্র শুরু হওয়ার আগে এটি প্রধান মেমরিতে সংরক্ষণ করা হয়।

যখন ADD eax, 42 এর জন্য মেশিন কোড আনা হয় মেমরি শেষ থেকে, নির্দেশনা ডিকোড করা হয়। ডিকোড করা আউটপুট বলে যে opcode হল ADD এবং অপারেন্ডগুলি হল eax এবং 42 .

eax একটি রেজিস্টার - প্রসেসরের মধ্যে অন্তর্নির্মিত একটি মেমরি অবস্থান যা প্রসেসর দ্বারা তাত্ক্ষণিকভাবে অ্যাক্সেস করা যায়। eax বেশিরভাগ প্রসেসরে রেজিস্টারকে একুমুলেটর বলা হয়।

ADD eax, 42 সমাবেশ কোডটি eax এর বর্তমান মানের সাথে 42 যোগ করার জন্য ডিজাইন করা হয়েছে নিবন্ধন করুন (সংগ্রহকারী) এবং সঞ্চয় করুন যে যোগফল eax . এটি হল eax = eax + 42 .

ধরুন যে বর্তমানে eax হল 20। এর মানে হল eax এর মান ADD eax, 42 চালানোর পরে হবে 20 + 42 =62।

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন
ইডিভিএসি ছিল ইউ.এস. আর্মির ব্যালিস্টিক রিসার্চ ল্যাবোর-এর জন্য নির্মিত প্রাচীনতম ইলেকট্রনিক বাইনারি কম্পিউটারগুলির মধ্যে একটি। (চিত্রের উৎস, পাবলিক ডোমেন)।

EDVAC-এর মতো প্রাথমিক কম্পিউটারগুলির নকশা ক্লান্তিকর গাণিতিক গণনাগুলিকে সহজ এবং দ্রুত করার ইচ্ছা নিয়ে শুরু হয়েছিল।

কম্পিউটার কম্পিউট তৈরির সম্পূর্ণ দায়িত্ব অ্যাডারদের কাঁধে - সার্কিট যা দুটি সংখ্যা যোগ করে। কারণ বিয়োগ, গুণ এবং ভাগের মতো অত্যাধুনিক ক্রিয়াকলাপগুলি তাদের সার্কিটে যোগকারীকে ব্যবহার করে।

শেষ পর্যন্ত কম্পিউটারগুলি যুক্তির ক্ষমতা সহ একটি দ্রুত গাণিতিক মেশিন। বাইনারি গাণিতিক ডিজাইনের (ধনাত্মক এবং বিশেষ করে নেতিবাচক পূর্ণসংখ্যার) চ্যালেঞ্জগুলি এবং সৌন্দর্য বোঝা হল একটি কম্পিউটার প্রসেসরের সবচেয়ে মৌলিক ধারণাগুলির মধ্যে একটি .

আসুন প্রথমে দেখি কিভাবে দশমিক সংখ্যা বাইনারিতে উপস্থাপন করা হয় এবং কিভাবে দুটি বাইনারি মান যোগ করা যায়। তারপর আমরা সৌন্দর্য অন্বেষণ শুরু হবে.

বাইনারি সিস্টেম কিভাবে কাজ করে

আমি যদি আপনাকে 872500 পড়তে বলি , আপনি সম্ভবত বলবেন 872.5K . আসুন আমাদের মন কীভাবে এটি করে তা দেখে নেওয়া যাক।

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

আমরা ডান দিক থেকে প্রথম অঙ্কে একজনের স্থান নির্ধারণ করি, তারপর ডান থেকে দ্বিতীয়টিতে দশের স্থান, শতভাগ থেকে তৃতীয়, এবং আরও অনেক কিছু, প্রতিবার 10 এর শক্তি দ্বারা বৃদ্ধি পাই৷

প্রতিটি স্থানে 10 এর এই শক্তিগুলি স্থানগুলির ওজন। শততম স্থানের ওজন একশত। আমরা প্রতিটি স্থানের সংখ্যাগুলিকে তাদের স্থানের ওজন দ্বারা গুণ করি এবং একটি সম্পূর্ণ সংখ্যা পেতে সেগুলিকে যোগ করি।

উপরের ডায়াগ্রামে, আপনি দেখতে পাচ্ছেন যে প্রতিটি স্থানের ওজনের বৃদ্ধি 10 এর শক্তিতে, 10^0 থেকে শুরু করে এবং 10^5 দিয়ে যাচ্ছে . এজন্য দশমিককে বেস টেন সিস্টেম বলা হয়।

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

বাইনারিতে, প্রতিটি স্থানের ওজন 2 শক্তি দ্বারা বৃদ্ধি পায়। এর মানে হল যে স্থানের ওজন 2^0 থেকে শুরু হয় এবং 2^something এ শেষ হয় . এটাই একমাত্র পার্থক্য।

00110101 দশমিকে 53-এ অনুবাদ করা হয়। কম্পিউটারগুলি বাইনারিকে একইভাবে ব্যাখ্যা করে যেভাবে আমরা মানুষ দশমিককে ব্যাখ্যা করি, যা প্রতিটি স্থানের অঙ্ককে তার ওজন দ্বারা গুণ করে এবং তাদের সংক্ষিপ্ত করে।

কিভাবে 1s এবং 0s যোগ করবেন

সংযোজন বাইনারিতে প্রায় একইভাবে কাজ করে যেমন এটি দশমিকে করা হয়। একটি উদাহরণের মাধ্যমে তা দেখা যাক। আমরা দুটি বাইনারি সংখ্যা যোগ করব:1101 (13) এবং 1100 (12)।

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

আমরা যেমন দশমিক পদ্ধতিতে করি, আমরা একজনের স্থান থেকে শুরু করি (2^0 ) 1 এবং 0 যোগ করলে আমাদের 1 পাওয়া যায়। তাই আমরা সেখানে 1 রাখি। আমার সাথে থাকুন এবং আপনি পুরো ছবি পাবেন।

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

0 যোগ 0 হল 0। এগিয়ে চলছি।

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

1 যোগ 1 হল 2। এবং 2 কে বাইনারিতে 10 হিসাবে উপস্থাপন করা হয় . আমরা 1কে পরের স্থানে নিয়ে যাই এবং বর্তমান যে স্থানে আছি তার ফলস্বরূপ 0 রাখি। এটি কি দশমিক যোগে একটি স্থানে 9 অতিক্রম করার সমান নয়?

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

আমাদের সেখানে দুটি 1s এবং একটি 1 যা পূর্ববর্তী স্থান থেকে এগিয়ে নেওয়া হয়েছিল, তাই মোট তিনটি 1s আছে। তাদের যোগফল হবে 3, এবং বাইনারি 3-এ 11 তাই আমরা 11 লিখি . চূড়ান্ত ফলাফল হল 11001 অথবা 25 দশমিক আকারে, যা প্রকৃতপক্ষে 13 + 12।

উপরের গণনাটি অনুমান করে যে ফলাফল সংরক্ষণ করার জন্য আমাদের কাছে পাঁচটি বিট উপলব্ধ রয়েছে। যদি একটি 4-বিট কম্পিউটার এই সংযোজন করে, তবে ফলাফল সংরক্ষণ করার জন্য এটিতে কেবলমাত্র চারটি বিট উপলব্ধ থাকবে।

সেই পঞ্চম বিটটিকে একটি ওভারফ্লো বলা হবে৷ 4-বিট কম্পিউটারে। পূর্ণসংখ্যার পাটিগণিতের মধ্যে, ওভারফ্লো বিট উপেক্ষা করা হয় বা বাতিল করা হয়। তাই আমরা পেতাম 1001 (9) আমাদের ফলাফল হিসাবে যদি আমরা একটি 4-বিট কম্পিউটার ব্যবহার করি।

বাইনারী গাণিতিক নকশার সৌন্দর্য

আমরা এগিয়ে যাওয়ার আগে দুটি গুরুত্বপূর্ণ পদ আমাদের বুঝতে হবে তা হল অন্যতম তাৎপর্যপূর্ণ বিট এবং সবচেয়ে উল্লেখযোগ্য বিট .

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

ডানদিকের বিটটি সবচেয়ে কম উল্লেখযোগ্য বিট কারণ এটির স্থানের ওজন সবচেয়ে ছোট (2^0 ) এবং বামদিকের বিটটি সবচেয়ে উল্লেখযোগ্য বিট যেহেতু এটির সর্বোচ্চ স্থানের ওজন রয়েছে (2^7 )।

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

সৌভাগ্যক্রমে, আমাদেরও নেতিবাচক সংখ্যা রয়েছে।

সিপিইউ এর গাণিতিক নকশার সৌন্দর্য নেতিবাচকতায় রয়ে গেছে।

তাহলে কম্পিউটার কিভাবে ঋণাত্মক সংখ্যার প্রতিনিধিত্ব করে এবং কিভাবে ঋণাত্মক সংখ্যার উপর পাটিগণিত কাজ করে? আসুন এই সমস্যার একটি এনকোডিং পদ্ধতি দেখি।

অনুগ্রহ করে মনে রাখবেন যে নীচের বিভাগগুলিতে আমরা ধারণাগুলি বোঝার জন্য একটি 4-বিট কম্পিউটারের সাথে কাজ করব, যার অর্থ পঞ্চম বিটটিকে একটি ওভারফ্লো হিসাবে বিবেচনা করা হবে। গাণিতিক করতে 16-বিট, 32-বিট বা 64-বিটের মতো সমস্ত CPU আর্কিটেকচারে একই নীতি প্রযোজ্য।

সাইন ম্যাগনিটিউড এনকোডিং পদ্ধতি

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

1101 এই এনকোডিং স্কিমে দশমিক আকারে -5 হবে। সবচেয়ে বাম বা সবচেয়ে উল্লেখযোগ্য বিট হল সাইন বিট। এটি সংখ্যার চিহ্ন সম্পর্কে প্রসেসরকে বলে – অর্থাৎ সংখ্যাটি ধনাত্মক বা ঋণাত্মক কিনা।

0 সাইন বিটে একটি ইতিবাচক মান এবং 1 প্রতিনিধিত্ব করে একটি নেতিবাচক মান প্রতিনিধিত্ব করে। অবশিষ্ট বিট আমাদের প্রকৃত মাত্রা বলে।

1101-এ , সাইন বিট হল 1 তাই সংখ্যাটি ঋণাত্মক। 101 দশমিকে 5 সমান। তাই 1101 দশমিকে -5 গণনা করা হবে।

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন
সাইন বিট এনকোডিং স্কিম সহ চারটি বিট দ্বারা উপস্থাপন করা যেতে পারে এমন সমস্ত সম্ভাব্য সংখ্যা

উপরের চিত্রটিতে আপনি সমস্ত পূর্ণসংখ্যা দেখতে পাবেন যা এই এনকোডিং পদ্ধতি ব্যবহার করে চারটি বিট দ্বারা প্রতিনিধিত্ব করা যেতে পারে। এই বিন্দু পর্যন্ত সব ভাল দেখায়.

কিন্তু যদি আমরা ঘনিষ্ঠভাবে তাকাই, আমরা এই এনকোডিং স্কিমে একটি খুব গুরুতর ডিজাইন সমস্যা দেখতে পাব। আসুন সেই সমস্যার মুখোমুখি হই।

আসুন একটি ধনাত্মক এবং একটি ঋণাত্মক সংখ্যা যোগ করি। উদাহরণস্বরূপ আমরা +4 এবং -1 যোগ করব। আমাদের উত্তর (+4) + (-1) = (+3) হওয়া উচিত সেটি হল 0011 .

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

দেখুন, ফলাফল হল 1101 (-5)। প্রকৃত উত্তর 0011 হওয়া উচিত (+3)। যদি আমরা একটি প্রসেসরে এই পদ্ধতির প্রয়োগ করি তবে এই সমস্যাটি মোকাবেলা করার জন্য আমাদের যুক্তি যোগ করতে হবে এবং ইঞ্জিনিয়াররা তাদের যুক্তিতে অতিরিক্ত জটিলতা ঘৃণা করে।

আমরা আরো সার্কিট যোগ করার সাথে সাথে, শক্তি খরচ বৃদ্ধি পায় এবং কর্মক্ষমতা ক্ষতিগ্রস্ত হয়।

আধুনিক ট্রানজিস্টর-ভিত্তিক কম্পিউটারগুলির জন্য এটি একটি তুচ্ছ সমস্যা বলে মনে হতে পারে।

কিন্তু EDVAC-এর মতো প্রথম দিকের কম্পিউটারের কথা চিন্তা করুন যা হাজার হাজার ভ্যাকুয়াম টিউবে চালিত হয় যা দিনে শত শত লোক দ্বারা চালিত কিলোওয়াট শক্তি ব্যবহার করে। আর এগুলো তৈরি করতে সরকার খরচ করেছে লাখ লাখ টাকা।

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

তাই ইঞ্জিনিয়ারদের একটি স্মার্ট এনকোডিং ডিজাইনের কথা ভাবতে হয়েছিল।

এখন, সময় এসেছে সেই সৌন্দর্য প্রকাশ করার যা এই সমস্যাটি মোকাবেলা করবে এবং আমাদের সিস্টেমকে আরও সহজ, আরও কর্মক্ষম এবং কম শক্তির ক্ষুধার্ত করে তুলবে৷

একটি সুন্দর এনকোডিং সিস্টেম প্রবেশ করে এবং CPU জ্বলজ্বল করে ❤️

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

ধনাত্মক সংখ্যাগুলি পূর্ববর্তী এনকোডিং স্কিমের মতো ঠিক একইভাবে উপস্থাপন করা হয়:একটি অগ্রণী 0 এর পরে মাত্রার জন্য অবশিষ্ট বিট। উদাহরণস্বরূপ, এই এনকোডিং স্কিমেও, 6 কে 0110 হিসাবে উপস্থাপন করা হবে .

একটি ঋণাত্মক সংখ্যার প্রতিনিধিত্ব করার জন্য, একটি দুই ধাপের গণিত প্রক্রিয়াটি তার ধনাত্মক অংশে চালানো হয়। -6 এর প্রতিনিধিত্ব করার অর্থ হল আমরা বাইনারিতে -6 পেতে +6 তে একটি দুই ধাপের গণিত প্রক্রিয়া করব।

আসুন দেখি কিভাবে -6 বাইনারিতে এনকোড করবে:

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

পূর্ববর্তী সাইন ম্যাগনিটিউড পদ্ধতিতে, +6 এর নেতিবাচক গণনা করার জন্য, আমরা কেবল 0 থেকে সাইন বিট পরিবর্তন করতাম। 1 এ . 0110 (+6) হয়ে যাবে 1110 (-6)।

এই নতুন এনকোডিং স্কিমে, আমরা প্রথমে বিটগুলিকে উল্টে দিই। শূন্য থেকে এক এবং এককে শূন্যে পরিবর্তন করা হচ্ছে। 0110 (+6) 1001 হয়ে যায় . বিটগুলিকে উল্টানোকে "একজনের পরিপূরক" বলা হয়, তাই এখানে আমরা 0110 এর পরিপূরক গণনা করেছি। ফলে 1001 . তারপর...

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

আমরা 0001 যোগ করি (+1) একজনের পরিপূরক আমরা প্রথম ধাপ থেকে পেয়েছি (1001 ) ফলাফল 1010 -6 এর বাইনারি উপস্থাপনা হবে। এই এনকোডিং স্কিমটিকে দুইয়ের পরিপূরক বলা হয়। তাই মনে রাখবেন যে একটি ধনাত্মক পূর্ণসংখ্যার দুটির পরিপূরক গণনা করা আমাদের এর নেতিবাচক প্রতিরূপ দেয়৷

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

ইনভার্টিং বিট আমাদের একের পরিপূরক দেয়। একটির পরিপূরকের সাথে একটি যোগ করলে আমাদের দুটি মূল বিটের পরিপূরক হয় যা দিয়ে আমরা শুরু করেছি। সহজ, তাই না?

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন
সমস্ত সম্ভাব্য সংখ্যা যা দুটির পরিপূরক এনকোডিং স্কিম সহ চারটি বিট দ্বারা উপস্থাপন করা যেতে পারে

এখন, দেখা যাক কেন এই এনকোডিং স্কিমটি এত সুন্দর। আমরা 0100 যোগ করব (+4) এবং 1111 (-1)।

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

দেখুন, আমরা দুটির পরিপূরক এনকোডিং স্কিম দিয়ে সঠিক ফলাফল পাই। এখন আমরা তাদের চিহ্ন সম্পর্কে চিন্তা না করে পূর্ণসংখ্যা যোগ করতে পারি।

আমরা শিখেছি কিভাবে একটি ঋণাত্মক পূর্ণসংখ্যা 0s এবং 1s-এ দুইটির পরিপূরক এনকোডিংয়ের মাধ্যমে উপস্থাপন করা যায়। এখন ধরুন আমরা ADD eax, -3 এক্সিকিউট করি এবং eax রেজিস্টারে বর্তমান মান হল -1। সুতরাং ADD eax, -3 কার্যকর করার পরে eax-এ মান হবে -4 (যা 1100 দুই এর পরিপূরক এনকোডিং)।

যখন অপারেটিং সিস্টেম 1100 পুনরুদ্ধার করে eax থেকে ব্যবহারকারীর কাছে ফলাফল উপস্থাপন করতে, অপারেটিং সিস্টেম কিভাবে 1100 ডিকোড করে দশমিক থেকে? অথবা ধরুন আমরা যদি একজন প্রোগ্রামার হিসেবে 1100 জুড়ে আসি , কিভাবে আমরা 1100 সংখ্যাটি বের করতে পারি প্রতিনিধিত্ব করে?

আমরা কখন 1100 হিট করি তা দেখার জন্য অবশ্যই আমরা প্রতিটি ধনাত্মক পূর্ণসংখ্যার দুটি পরিপূরক গণনা চালিয়ে যেতে পারি না . যে খুব ধীর হবে.

প্রোগ্রামার এবং ওএস বাইনারিকে দশমিকে ডিকোড করতে দুইয়ের পরিপূরকের একটি সুন্দর বৈশিষ্ট্য ব্যবহার করে।

যখন আমরা একটি ধনাত্মক সংখ্যার দুটির পরিপূরক গণনা করি, তখন আমরা এর ঋণাত্মক প্রতিরূপ পাই। আচ্ছা, বিপরীতটাও সত্য - যার অর্থ একটি ঋণাত্মক সংখ্যার দুটির পরিপূরক গণনা করা আমাদেরকে এর ধনাত্মক প্রতিরূপ দেবে। আমরা এক মিনিটের মধ্যে এটি কেন দেখতে হবে.

প্রথমে, আসুন বুঝতে পারি কিভাবে OS বা একটি প্রোগ্রামার 1100 ডিকোড করবে দশমিক থেকে।

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

1100 পুনরুদ্ধার করার সময় eax রেজিস্টার থেকে, OS 1 দেখে সাইন বিট হিসাবে যা সংকেত দেয় যে পূর্ণসংখ্যা নেতিবাচক। 1100 এর দুই পরিপূরক গণনা করা হয় যা 1100 এর ধনাত্মক প্রতিরূপ দেয় যা 0100 হিসাবে বেরিয়ে আসে (+4)। OS তারপর ইতিবাচক প্রতিরূপের উপর একটি নেতিবাচক চিহ্ন প্রিপেন করে এবং চূড়ান্ত উত্তরটি -4 হিসাবে প্রদান করে। এই অনুচ্ছেদটি আবার পড়ুন এবং আপনি আরও ভালভাবে বুঝতে পারবেন।

তারপর সিপিইউ হেসে বিদায় জানালো আজকের জন্য;)

সিপিইউ তার মায়ের সাথে দেখা করতে তার বাড়িতে গেছে। দুজনের পরিপূরক শিল্পের অভ্যন্তরীণ কাজগুলি নিয়ে আলোচনা করার জন্য এখন আমাদের কাছে প্রচুর সময় আছে৷

দুজনের পরিপূরক এনকোডিং কেন এবং কিভাবে কাজ করে?

যদি আমি আপনাকে একটি সংখ্যার ঋণাত্মক খুঁজে বের করতে বলি, +42 বলুন, +42-এর ঋণাত্মক খুঁজে বের করার সহজ উপায় কী?

তর্কাতীতভাবে, সবচেয়ে সহজ উপায় হল 0 থেকে সংখ্যাটি বিয়োগ করা, তাই না? 0 - (+42) = -42 . যদি আমরা এটি পুনরাবৃত্তি করি, আমরা ধনাত্মক মান, 0 - (-42) = +42-এ ফিরে যাব . এই সমস্ত গণিত যা দুজনের পরিপূরক তৈরি করে।

নেতিবাচক পূর্ণসংখ্যার সাথে মাইক্রোপ্রসেসর রোম্যান্স - সিপিইউ পাটিগণিত ডিজাইনের কীভাবে এবং কেন

আমরা 10000 করছি (0 দশমিকে যেহেতু বামতম 1 একটি ওভারফ্লো) বিয়োগ 0101 (+5)। আমরা 1011 পাই দুই এর পরিপূরক এনকোডিং-এ দশমিকে -5। বিয়োগ কিভাবে করা হয় তা উপেক্ষা করুন। সেটা গুরুত্বপূর্ণ নয়. দুজনের পরিপূরকের পিছনে অন্তর্দৃষ্টি বোঝা গুরুত্বপূর্ণ।

10000 1111 + 0001 হিসাবে লেখা যেতে পারে (এই দুটি যোগ করার চেষ্টা করুন, আপনি 10000 পাবেন ) তাই আসলে আমরা করছি:

        10000       -   0101
=>  (1111 + 0001)   -   0101

উপরের সমীকরণটি পুনর্বিন্যাস করে আমরা এটিকে এভাবে লিখতে পারি:

    (1111 + 0001)  -  0101
=>  (1111 - 0101)  +  0001

Step 1: subtract 0101 from 1111

        1 1 1 1
       -0 1 0 1
       ---------
        1 0 1 0
        
       see, subtracting 0101 from 1111 is equivalent 
       to inverting the bits of 0101, as we got 1010 as a result. 

  
       
Step 2: add 0001 to the above result  

        1 0 1 0  ---> result of step 1
       +0 0 0 1
       ---------
        1 0 1 1      
       
       we get 1011 that is -5 in two's complement encoding.      

আপনি কি দেখেছেন যে দুটির পরিপূরক সিস্টেম মৌলিকভাবে 0 বিয়োগ সংখ্যা করে? বিটগুলি উল্টানো এবং একটি যোগ করা 0 থেকে সংখ্যা বিয়োগ করার একটি দ্রুত এবং চতুর উপায়৷

এই কারণেই আমরা একটি ধনাত্মক সংখ্যার ধনাত্মক এবং একটি ধনাত্মক সংখ্যার ঋণাত্মক পাই যখন আমরা এর দুটি পরিপূরক গণনা করি - কারণ আমরা আসলে 0 (0 - number) থেকে সংখ্যাটি বিয়োগ করছি। )

1900-এর দশকের কম্পিউটারগুলিতে শুধুমাত্র যোগ গাণিতিক যুক্তি ছিল কারণ দুটির পরিপূরক এনকোডিং স্কিম এত সুন্দর যে বিয়োগ সহজেই করা যেতে পারে।

উদাহরণস্বরূপ, 100 থেকে 12 বিয়োগ করতে, CPU দুইটির +12 এর পরিপূরক গণনা করে যা -12 উৎপন্ন করে তারপর আমরা -12 থেকে 100 যোগ করি যা আমাদের প্রয়োজনীয় আউটপুট দেয়।

কেন আমরা সরাসরি 0 থেকে বিয়োগ করি না বাইনারিতে একটি সংখ্যার নেতিবাচক বা বিপরীতে খুঁজে পেতে?

কারণ বিয়োগ একটি ধীর এবং জটিল প্রক্রিয়া (ধার নেওয়ার জন্য ধন্যবাদ) তাই আমাদের কম্পিউটারের একটি ব্যয়বহুল বিয়োগ বর্তনীর প্রয়োজন হবে যদি আমরা সেই পথে যাই। প্রতিবার যখন আমরা একটি ঋণাত্মক পূর্ণসংখ্যা উপস্থাপন করতে চাই তখন 0 থেকে বিয়োগ করার কল্পনা করুন। এটা আমাদের জন্য এবং আমাদের কম্পিউটারের জন্যও দুঃস্বপ্ন হবে!

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

তাই আসুন এই সুন্দর এনকোডিং স্কিমের জন্য আমাদের কম্পিউটার ডিজাইনারদের প্রশংসা করি – দুইটির পরিপূরক ❤️।

অন্তিম শব্দ

আমি নিজেকে প্রতিশ্রুতি দিয়েছিলাম যে আমার তৈরি করা কোনো শিক্ষার উপাদানের জন্য আমি কখনই চার্জ নেব না। আমি শিক্ষার জন্য যাই করি না কেন, তা একটি সাধারণ নিবন্ধ হোক বা একটি কোর্স বা একটি ইবুক, সর্বদা 100% বিনামূল্যে এবং উন্মুক্ত থাকবে৷

আমি দরকারী সম্পদ পোস্ট করি এবং আমার টুইটার অ্যাকাউন্টে অর্থপূর্ণ চিন্তা শেয়ার করি। আপনি আমাকে সেখানে অনুসরণ করতে পারেন এবং যদি আপনি এই নিবন্ধটি থেকে নতুন কিছু শিখেন তবে আমাকে একটি DM পাঠাতে পারেন। এটা আমার দিন তৈরি করবে :)

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

মাইকোডস্কুলের অনিমেষ আমাকে অনেকগুলি প্রোগ্রামিং ধারণা শিখিয়েছে যা আমি এই নিবন্ধে লিখেছি এমন ধারণাগুলি সহ অন্য কারও চেয়ে ভাল।

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

সুখী শেখা!


  1. আপনার আইফোন এবং আইপ্যাডে ফটোতে কীভাবে ক্যাপশন যুক্ত করবেন (এবং কেন)

  2. টিভি অ্যাপের সাহায্যে আইফোন এবং আইপ্যাডে কীভাবে টিভি এবং সিনেমা দেখতে হয়

  3. Redis SADD - কিভাবে সেটে উপাদান তৈরি এবং যোগ করতে হয়

  4. Windows 10