"2 এর পরিপূরক" কী?


434

আমি একটি কম্পিউটার সিস্টেমের কোর্সে আছি এবং টু কমপ্লিমেন্ট সহ কিছুটা লড়াই করে যাচ্ছি । আমি এটি বুঝতে চাই তবে আমি যা পড়েছি তা আমার জন্য ছবিটি একত্রিত করে নি। আমি উইকিপিডিয়া নিবন্ধ এবং আমার পাঠ্য বই সহ বিভিন্ন নিবন্ধ পড়েছি ।

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

আমি যা আশা করছি তা হ'ল একটি পরিষ্কার এবং সংক্ষিপ্ত সংজ্ঞা যা কোনও প্রোগ্রামার দ্বারা সহজেই বোঝে।

উত্তর:


627

টু এর পরিপূরক হ'ল পূর্ণসংখ্যা সংরক্ষণের একটি চতুর উপায় যাতে সাধারণ গণিত সমস্যাগুলি প্রয়োগ করা খুব সহজ।

বুঝতে, আপনাকে বাইনারি সংখ্যাগুলি চিন্তা করতে হবে।

এটি মূলত বলে,

  • শূন্যের জন্য, সমস্ত 0 ব্যবহার করুন।
  • ধনাত্মক পূর্ণসংখ্যার জন্য, সর্বোচ্চ 2 (বিটের সংখ্যা - 1) -1 দিয়ে গণনা শুরু করুন ।
  • নেতিবাচক পূর্ণসংখ্যার জন্য, ঠিক একই জিনিসটি করুন তবে 0 এবং 1 এর ভূমিকা পরিবর্তন করুন (সুতরাং 0000 দিয়ে শুরু করার পরিবর্তে 1111 দিয়ে শুরু করুন - এটি "পরিপূরক" অংশ)।

আসুন এটি 4 বিটের মিনি-বাইট দিয়ে চেষ্টা করুন (আমরা এটিকে একটি নিবল - 1/2 বাইট বলব )।

  • 0000 - শূন্য
  • 0001 - এক
  • 0010 - দুই
  • 0011 - তিন
  • 0100থেকে 0111- চার থেকে সাত

এটি যতদূর আমরা ইতিবাচক দিকে যেতে পারি। 2 3 -1 = 7।

নেতিবাচক জন্য:

  • 1111 - নেতিবাচক এক
  • 1110 - নেতিবাচক দুটি
  • 1101 - নেতিবাচক তিন
  • 1100থেকে 1000- নেতিবাচক চার থেকে নেতিবাচক আট

দ্রষ্টব্য যে আপনি নেতিবাচক ( 1000= -8) এর জন্য একটি অতিরিক্ত মান পেয়েছেন যা আপনি ধনাত্মক হিসাবে না। এটি কারণ 0000শূন্য জন্য ব্যবহৃত হয়। এটি কম্পিউটারের নম্বর লাইন হিসাবে বিবেচনা করা যেতে পারে ।

ধনাত্মক এবং নেতিবাচক সংখ্যার মধ্যে পার্থক্য

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

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


146
সম্ভবত দুজনের পরিপূরকের সেরা অংশটি এটি কীভাবে গণিতকে সহজ করে। 2 (0010) এবং -2 (1110) একসাথে যুক্ত করার চেষ্টা করুন এবং আপনি 10000 পান The সবচেয়ে উল্লেখযোগ্য বিটটি ওভারফ্লো, তাই ফলাফলটি আসলে 0000
Al

96
সহজ সংযোজন এবং বিয়োগের পাশাপাশি আরও একটি সুবিধা হ'ল 2 এস পরিপূরকটিতে কেবল একটি শূন্য থাকে। যদি আপনি একটি সাধারণ চিহ্ন বিট ব্যবহার করে থাকেন তবে +1 এবং 1001 -1 উপস্থাপনের জন্য 0001 ব্যবহার করে বলুন, আপনার কাছে দুটি শূন্য থাকবে: 0000 ("+0") এবং 1000 ("-0")। এটি পিছনে সত্যিকারের ব্যথা।
Jörg W Mittag

26
এটি বিন্দুতে থাকার জন্য এবং কেন নেতিবাচক মানগুলির বৃহত্তর পরিসীমা ধনাত্মক রয়েছে তা ব্যাখ্যা করার জন্য আপভোট করুন। আমি ব্যাপ্তির পার্থক্যের কারণ খুঁজতে এসেছি।
আশ্বিন

2
আপনার কি "নেতিবাচক পূর্ণসংখ্যার জন্য বলা উচিত নয়, ঠিক একই জিনিসটি করুন তবে গণনা করুন এবং 0 এবং 1 এর ভূমিকাটি পরিবর্তন করুন"
Koray Tugay

1
দুর্দান্ত। বিটকে নেতিবাচক পূর্ণসংখ্যায় রূপান্তর করার অতিরিক্ত অংশ যুক্ত করুন।
সুরজ জৈন

339

আমি অবাক হয়েছি যদি এটি উইকিপিডিয়া নিবন্ধের চেয়ে আরও ভালভাবে ব্যাখ্যা করা যায়।

আপনি দুটির পরিপূরক প্রতিনিধিত্বের সাথে যে প্রাথমিক সমস্যাটি সমাধান করার চেষ্টা করছেন সেটি হ'ল negativeণাত্মক পূর্ণসংখ্যা সংরক্ষণ করার সমস্যা।

প্রথমে 4 বিটগুলিতে স্বাক্ষরবিহীন একটি পূর্ণসংখ্যার বিবেচনা করুন। আপনি নিম্নলিখিত পেতে পারেন

0000 = 0
0001 = 1
0010 = 2
...
1111 = 15

এগুলি স্বাক্ষরযুক্ত কারণ তারা নেতিবাচক বা ইতিবাচক কিনা সে সম্পর্কে কোনও ইঙ্গিত নেই।

স্বাক্ষর এবং অতিরিক্ত স্বরলিপি

নেতিবাচক সংখ্যা সঞ্চয় করতে আপনি বেশ কয়েকটি জিনিস চেষ্টা করতে পারেন। প্রথমত, আপনি সাইন মাত্রার সংকেত ব্যবহার করতে পারেন যা প্রথম বিটকে +/- উপস্থাপন করতে সাইন বিট হিসাবে এবং বাকি বিটগুলি দৈর্ঘ্যের প্রতিনিধিত্ব করার জন্য নির্ধারণ করে। সুতরাং আবার 4 টি বিট ব্যবহার করা এবং ধরে নেওয়া 1 টি এর অর্থ - এবং 0 এর অর্থ + তখন আপনার কাছে রয়েছে

0000 = +0
0001 = +1
0010 = +2
...
1000 = -0
1001 = -1
1111 = -7

তাহলে, আপনি কি সমস্যাটি দেখতে পাচ্ছেন? আমাদের ইতিবাচক এবং negativeণাত্মক 0 রয়েছে। বড় সমস্যাটি বাইনারি সংখ্যা যুক্ত এবং বিয়োগ করে। সাইন মাত্রার ব্যবহার করে যোগ করতে এবং বিয়োগ করার সার্কিটগুলি অত্যন্ত জটিল হবে।

কি

0010
1001 +
----

?

আরেকটি সিস্টেম হ'ল অতিরিক্ত স্বীকৃতি । আপনি নেতিবাচক সংখ্যা সঞ্চয় করতে পারেন, আপনি দুটি শূন্যের সমস্যা থেকে মুক্তি পাবেন তবে সংযোজন এবং বিয়োগফলটি এখনও কঠিন।

সুতরাং বরাবর দুটি পরিপূরক আসে। এখন আপনি ইতিবাচক এবং নেতিবাচক পূর্ণসংখ্যা সঞ্চয় করতে পারেন এবং আপেক্ষিক স্বাচ্ছন্দ্যে পাটিগণিত সম্পাদন করতে পারেন। একটি সংখ্যাটিকে দুটি এর পরিপূরক হিসাবে রূপান্তর করার জন্য বিভিন্ন পদ্ধতি রয়েছে। এখানে একটি।

দশমিক দুইয়ের পরিপূরকতে রূপান্তর করুন

  1. সংখ্যাটি বাইনারি রূপান্তর করুন (এখনকার চিহ্নটি উপেক্ষা করুন) উদাহরণস্বরূপ 5টি 0101 এবং -5 হয় 0101

  2. সংখ্যাটি যদি ইতিবাচক সংখ্যা হয় তবে আপনি শেষ করেছেন। উদাহরণস্বরূপ 5 টি দ্বিগুণ পরিপূরক স্বরলিপি ব্যবহার করে বাইনারি হয় 10

  3. সংখ্যাটি যদি negativeণাত্মক হয়

    3.1 পরিপূরকটি আবিষ্কার করুন (0 এবং 1 এর বিপরীত করুন) যেমন -5 0101 সুতরাং পরিপূরক সন্ধান করা 1010 is

    3.2 পরিপূরকগুলিতে 110 + 1 = 1011 যোগ করুন Therefore সুতরাং, দু'জনের পরিপূরক 1011 হয়।

সুতরাং, আপনি যদি বাইনারি 2 + (-3) করতে চান? 2 + (-3) হয় -1। আপনি যদি এই সংখ্যাগুলি যুক্ত করতে সাইন আকার ব্যবহার করেন তবে আপনাকে কী করতে হবে? 0010 + 1101 =?

দুটির পরিপূরক ব্যবহার করা কত সহজ হবে তা বিবেচনা করুন।

 2  =  0010
 -3 =  1101 +
 -------------
 -1 =  1111

দুইটির পরিপূরককে দশমিক দশকে রূপান্তর করা

1111 দশমিক রূপান্তর করা:

  1. সংখ্যাটি 1 দিয়ে শুরু হয়, সুতরাং এটি নেতিবাচক, সুতরাং আমরা 1111 এর পরিপূরকটি খুঁজে পাই, এটি 0000।

  2. 1 থেকে 0000 যোগ করুন এবং আমরা 0001 পাই।

  3. রূপান্তর করুন 0001 দশমিক, যা 1।

  4. সাইনটি প্রয়োগ করুন = -1।

Tada!


45
আমার মতে সেরা উত্তর।
Koray Tugay

5
হ্যাঁ, এটি খুব সহজ এবং বিষয়টি খুব ভাল ব্যাখ্যা করেছেন
ম্যাক্স কোরেটস্কি

3
উভয় উপায়ে রূপান্তর করার সময় কীভাবে একটি যুক্ত করা যায় তা সর্বদা একই সংখ্যার দিকে নিয়ে যায় আমি বুঝতে পারি না। আমার মনে আপনি পদক্ষেপগুলি বিপরীত করবেন, বা একটি বা কিছু বিয়োগ করবেন।
মার্কোস পেরেইরা

2
পরিপূরকটিতে কেন 1 যুক্ত করবেন?
জিনান জিং

4
এই উত্তরটি উইকিপিডিয়ায় ব্যবহার করা উচিত।
হিরোকি

119

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

দশমিকের জন্য এটি কীভাবে কাজ করে তা প্রত্যাহার করুন:
  2345
হ'ল
  2 × 10 3 + 3 × 10 2 + 4 × 10 1 + 5 × 10 0 লেখার একটি উপায় ।

একইভাবে, বাইনারি একই সাধারণ ধারণা অনুসরণ করে কেবল 0 এবং 1 ব্যবহার করে সংখ্যা লেখার একটি উপায় , তবে উপরের সেই দশকে 2s এর পরিবর্তে। তারপরে বাইনারি-তে,
  1111
হ'ল
  1 × 2 3 + 1 × 2 2 + 1 × 2 1 + 1 × 2 0 লেখার একটি উপায়
এবং আপনি যদি এটি কাজ করে থাকেন তবে এটি 15 (বেস 10) এর সমান হয়। কারণ এটি
  8 + 4 + 2 + 1 = 15।

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

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

ভাগ্যক্রমে, কম্পিউটারগুলি অসম্পূর্ণতা উপস্থাপন করে না। নম্বরগুলি নির্দিষ্ট দৈর্ঘ্যের (বা প্রস্থ, যদি আপনি চান তবে) সীমাবদ্ধ। সুতরাং আসুন ইতিবাচক বাইনারি সংখ্যাগুলিতে ফিরে আসি তবে একটি নির্দিষ্ট আকারের সাথে। আমি এই উদাহরণগুলির জন্য 8 টি সংখ্যা ("বিট") ব্যবহার করব। সুতরাং আমাদের বাইনারি সংখ্যাটি সত্যিই
  00001111
বা
  0 × 2 7 + 0 × 2 6 + 0 × 2 5 + 0 × 2 4 + 1 × 2 3 + 1 × 2 2 + 1 × 2 1 + 1 × 2 0 হবে

2 এর পরিপূরক নেতিবাচক গঠনের জন্য, আমরা প্রথমে
  11110000 গঠনের জন্য সমস্ত (বাইনারি) সংখ্যার পরিপূরক করি
এবং
  11110001 গঠন করতে 1 যুক্ত করি
তবে কীভাবে এটি বোঝাতে হবে -15?

উত্তরটি হ'ল আমরা হাই-অর্ডার বিটের অর্থ (বামতমটি) পরিবর্তন করি। এই বিটটি সমস্ত নেতিবাচক সংখ্যার জন্য 1 হবে। পরিবর্তনটি এটির উপস্থিতির সংখ্যার মানতে এর অবদানের চিহ্নটি পরিবর্তন করবে So সুতরাং এখন আমাদের 11110001 প্রতিনিধিত্ব করতে বোঝা যাচ্ছে
  - 1 × 2 7 + 1 × 2 6 + 1 × 2 5 + 1 × 2 4 + 0 × 2 3 + 0 × 2 2 + 0 × 2 1 + 1 × 2 0
লক্ষ্য করুন যে "-" সেই অভিব্যক্তির সামনে? এর অর্থ হ'ল সাইন বিটটি ওজন -2 7 বহন করে , যা -128 (বেস 10)। অন্যান্য সমস্ত অবস্থানের স্বাক্ষরযুক্ত বাইনারি সংখ্যায় তাদের ওজন একই ছিল the

আমাদের -15 কাজ করে এটি
  -128 + 64 + 32 + 16 + 1
এটি আপনার ক্যালকুলেটরটিতে চেষ্টা করে দেখুন। এটি -15।

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

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

এটি অদ্ভুততার একটি আইসবার্গের টিপের মতো। পৃষ্ঠের নীচে অপেক্ষা করার মতো আরও শুয়ে আছে, তবে এই আলোচনার জন্য এটি যথেষ্ট। আপনি যদি নির্দিষ্ট পয়েন্ট পাটিগণিতের জন্য "ওভারফ্লো" নিয়ে গবেষণা করেন তবে সম্ভবত আপনি আরও খুঁজে পেতে পারেন। আপনি যদি সত্যিই এটিতে যেতে চান তবে আপনি "মডিউলার গাণিতিক" নিয়েও গবেষণা করতে পারেন।


1
আমি এই উত্তর পছন্দ! 2s কীভাবে পরিপূরক নেওয়া এবং একটি কাজ যুক্ত করে তা ব্যাখ্যা করে।
এসজে।

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

বিপরীতমুখী নয় এমন অডবোল নম্বরটি উল্লেখ করা ভাল কাজ। তবে আমরা এই সম্পর্কে কি করব? কেউ যদি এটি উল্টানোর চেষ্টা করে তবে আমরা কি ওভারফ্লো পতাকাটি সেট করি?
এনএইচ।

অন্য উত্তরগুলি "কীভাবে" কেন্দ্রীভূত করার পরে, এই উত্তরটি "কেন" দিয়ে আলতোভাবে আমাদের নিয়ে যায়। এটা আমাকে সাহায্য করেছে। ধন্যবাদ!
অভিষেক পাঠক

যদি কোনও সংখ্যা 11000 ... 000 দিয়ে শেষ হয় তবে এটি উল্টিয়ে 01000 ... 000 উপার্জন করবে। দুইটির পরিপূরক স্বরলিপি এই ধারণার উপর ভিত্তি করে তৈরি করা হয়েছে যে বাম দিকের উপস্থাপিত অঙ্কের বাম দিকে সমস্ত অঙ্কের সেই অঙ্কের সমান মান হওয়া উচিত, তবে এমন একটি সংখ্যা উল্টানোর সময় যার প্রতিনিধিত্ব 1000 ... 000, এটি সত্য হবে না।
সুপারক্যাট

20

2 এর পরিপূরক বাইনারিটির মান সন্ধানের জন্য খুব দরকারী, তবে আমি এ জাতীয় সমস্যা সমাধানের আরও অনেক সংক্ষিপ্ত উপায় (অন্য কাউকে কখনও এটি প্রকাশ করতে দেখিনি) ভেবেছিলাম:

একটি বাইনারি নিন, উদাহরণস্বরূপ: ১১০১ যা [স্থানটিকে "1" মনে করে] -3 এর সমান হয় ।

2 এর পরিপূরক ব্যবহার করে আমরা এটি করব ... 1101 থেকে 0010 ফ্লিপ করুন ... 0001 + 0010 ===> আমাদের 0011 প্রদান করুন। 0011 ইতিবাচক বাইনারি = 3. সুতরাং 1101 = -3 !

আমি যা বুঝতে পেরেছি:

সমস্ত উল্টানো এবং যোগ করার পরিবর্তে, আপনি কেবল ইতিবাচক বাইনারি সমাধানের জন্য প্রাথমিক পদ্ধতিটি করতে পারেন (যাক 0101 বলুন) হল (2 3 * 0) + (2 2 * 1) + (2 1 * 0) + (2 0 * 1) = 5।

নেগেটিভ দিয়ে ঠিক একই ধারণাটি করুন (একটি ছোট বাঁক দিয়ে)

১১০১ নিন, উদাহরণস্বরূপ:

প্রথম সংখ্যাটির জন্য 2 3 * 1 = 8 এর পরিবর্তে , করুন - (2 3 * 1) = -8

তারপরে যথারীতি চালিয়ে যান, -8 + (2 2 * 1) + (2 1 * 0) + (2 0 * 1) = -3


1
সবচেয়ে ভাল উপায়, আমি 2 এর পরিপূরক বুঝতে পারি। এটি পড়ার পরে, আমি উপরের প্রশ্নের সমস্ত উত্তর বুঝতে পারি।
শাকিল শাহজাদ

1
কম্পিউটার সিস্টেমস: একটি প্রোগ্রামারের দৃষ্টিভঙ্গি বইতে এই পদ্ধতিটি উল্লেখ করা হয়েছে।
জিমো

1
এটি অনেক দ্রুততর উপায়!
চানজারে

14

কল্পনা করুন যে আপনার কাছে বিট / ট্রিটস / অঙ্কগুলি / যাই হোক না কেন একটি সীমাবদ্ধ সংখ্যা রয়েছে। আপনি সমস্ত সংখ্যাকে 0 হিসাবে 0 হিসাবে সংজ্ঞায়িত করেছেন এবং প্রাকৃতিকভাবে উপরের দিকে গণনা করুন:

00
01
02
..

শেষ পর্যন্ত আপনি উপচে পড়বে।

98
99
00

আমাদের দুটি সংখ্যা রয়েছে এবং 0 থেকে 100 পর্যন্ত সমস্ত সংখ্যার প্রতিনিধিত্ব করতে পারি those সমস্ত সংখ্যাটি ইতিবাচক! মনে করুন আমরাও নেতিবাচক সংখ্যা উপস্থাপন করতে চাই?

আমাদের যা আছে তা চক্র a 2 এর আগে সংখ্যাটি 1। 1 এর আগে সংখ্যা 0 হয় 0 0 এর আগে সংখ্যাটি ... 99

সুতরাং, সরলতার জন্য, যাক যে 50 এর চেয়ে বেশি সংখ্যার নেতিবাচক। "0" "49" এর মাধ্যমে 0 থেকে 49 প্রতিনিধিত্ব করে "

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

দশের পরিপূরক সম্পর্কে দুর্দান্ত জিনিসটি হ'ল সংযোজন ঠিক কাজ করে । ইতিবাচক এবং নেতিবাচক সংখ্যা যুক্ত করতে আপনাকে বিশেষ কিছু করার দরকার নেই!


9

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

এখানে চিত্র বর্ণনা লিখুন

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

কোনও গাড়ির ওডোমিটারটি কল্পনা করুন, এটি 99999-এ ঘুরবে you আপনি যদি 00000 বৃদ্ধি করেন তবে আপনি 00001 পাবেন you আপনি যদি 00000 হ্রাস পান, আপনি 99999 পাবেন (রোল-চারপাশের কারণে)। আপনি যদি একটিকে 99999 এ যুক্ত করেন তবে এটি 00000 এ ফিরে যায় So সুতরাং 99999 -1 প্রতিনিধিত্ব করে তা সিদ্ধান্ত নেওয়া কার্যকর। তেমনি, 99998 -2 ইত্যাদি উপস্থাপন করে এটি সিদ্ধান্ত নেওয়া খুব দরকারী very আপনাকে কোথাও থামতে হবে, এবং কনভেনশন অনুসারে, সংখ্যার উপরের অর্ধেকটি নেতিবাচক (50000-99999) হিসাবে গণ্য হবে, এবং নীচের অর্ধেক ধনাত্মক কেবল তাদের পক্ষে দাঁড়াবে (00000-49999)। ফলস্বরূপ, শীর্ষ অঙ্কটি 5-9 হওয়া মানে প্রতিনিধিত্ব করা সংখ্যাটি নেতিবাচক, এবং এটি 0-4 হওয়ার অর্থ প্রতিনিধিত্বমূলক ধনাত্মক - ঠিক দু'জনের পরিপূরক বাইনারি সংখ্যায় উপস্থাপিত চিহ্ন হিসাবে একই।

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


5

প্রদত্ত সংখ্যার 1'st পরিপূরক যোগ করে দুটি পরিপূরক খুঁজে পাওয়া যায়। আসুন আমরা এর দুটি সংখ্যক পরিপূরক খুঁজে বের করতে হবে 10101তার পরে এর পরিপূরকগুলি খুঁজে বের করতে হবে , অর্থাৎ এই ফলাফলটি 01010যুক্ত করুন , যা চূড়ান্ত উত্তর।101010+1=01011


4

8 বিট ব্যবহার করে বাইনারি আকারে উত্তর 10 - 12 পেতে আসুন: আমরা আসলে যা করব তা হ'ল 10 + (-12)

এটি 10 ​​থেকে বিয়োগের জন্য আমাদের 12 এর প্রশংসা অংশ নেওয়া দরকার বাইনারিতে 1200 00001100 b বাইনারিতে 10 হয় 00001010।

প্রশংসার অংশটি 12 পাওয়ার জন্য আমরা কেবলমাত্র সমস্ত বিট বিপরীত করি তারপরে 1 টি যোগ করি বাইনারিগুলিতে বিপরীত হয় 11110011 This এটি বিপরীত কোডও (যার পরিপূরক) is এখন আমাদের একটি যুক্ত করা দরকার যা এখন 11110100।

11110100 তাই 12 এর প্রশংসা! আপনি যখন এভাবে চিন্তা করেন তখন সহজ।

এখন আপনি বাইনারি আকারে 10 - 12 এর উপরের প্রশ্নটি সমাধান করতে পারেন।

00001010
11110100
-----------------
11111110  

3

2 এর পরিপূরক: যখন আমরা একটি সংখ্যার 1 এর পরিপূরকগুলির সাথে একটি অতিরিক্ত যুক্ত করি আমরা 2 এর পরিপূরকগুলি পেয়ে যাব। উদাহরণস্বরূপ: 100101 এটির 1 এর পরিপূরক 011010 এবং 2 এর পরিপূরকটি 011010 + 1 = 011011 (1 এর পরিপূরক সহ একটি যোগ করে) আরও তথ্যের জন্য এই নিবন্ধটি গ্রাফিকভাবে ব্যাখ্যা করুন।


চেনাশোনাটির সাথে ব্যাখ্যাযুক্ত লিঙ্কটির জন্য প্লাস 1
মনোহর রেড্ডি পোরেডি

3

গণিতের দৃষ্টিকোণ থেকে দুটির পরিপূরক সিস্টেমটির দিকে তাকানো সত্যই অর্থবোধ করে। দশের পরিপূরক হিসাবে, ধারণাটি মূলত পার্থক্যটিকে 'বিচ্ছিন্ন' করা।

উদাহরণ: 63 - 24 = x

আমরা 24 এর পরিপূরক যোগ করি যা সত্যই সঠিক (100 - 24)। সুতরাং সত্যই, আমরা যা করছি সমস্তগুলি সমীকরণের উভয় দিকে 100 যোগ করা হচ্ছে।

এখন সমীকরণটি হল: 100 + 63 - 24 = x + 100, এজন্যই আমরা 100 (বা 10 বা 1000 বা যা কিছু) সরিয়ে ফেলব।

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

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

উদাহরণ: 99999 - 03275 = 96724

এই কারণটি নয়টির পরিপূরক পরে, আমরা যোগ করি 1। আপনি সম্ভবত শৈশব গণিত থেকে জানেন, 9 'চুরি' দ্বারা 10 হয়ে যায়। সুতরাং মূলত এটি দশের পরিপূরক যা পার্থক্য থেকে 1 গ্রহণ করে।

বাইনারি, দুটি পরিপূরক দশের পরিপূরক হিসাবে সমতুল্য, এবং একজনের নয়টির পরিপূরকের পরিপূরক। প্রাথমিক পার্থক্যটি হ'ল দশটির ক্ষমতার সাথে পার্থক্যকে আলাদা করার চেষ্টা করার পরিবর্তে (সমীকরণের মধ্যে 10, 100 ইত্যাদি যোগ করা) আমরা দুটিটির সাথে পার্থক্যকে আলাদা করার চেষ্টা করছি।

এই কারণেই আমরা বিটগুলি উল্টাচ্ছি। ঠিক কীভাবে আমাদের মিনুয়েন্টটি দশমিক অর্ধে নাইনগুলির একটি শৃঙ্খল, আমাদের মিনুয়েন্টটি বাইনারিগুলির মধ্যে একটি চেইন।

উদাহরণ: 111111 - 101001 = 010110

যেগুলির শৃঙ্খলাগুলি দু'জনের একটি শক্তির নীচে 1, তারা দশমিক দশজনের মতো পার্থক্য থেকে 1 'চুরি' করে।

যখন আমরা নেতিবাচক বাইনারি সংখ্যার ব্যবহার করি, আমরা সত্যিই কেবল বলছি:

0000 - 0101 = x

1111 - 0101 = 1010

1111 + 0000 - 0101 = x + 1111

এক্সকে 'বিচ্ছিন্ন' করার জন্য, আমাদের 1 যুক্ত করতে হবে কারণ 1111 10000 থেকে এক দূরে এবং আমরা অগ্রণী 1 সরিয়ে ফেললাম কারণ আমরা এটিকে কেবলমাত্র মূল পার্থক্যে যুক্ত করেছি।

1111 + 1 + 0000 - 0101 = x + 1111 + 1

10000 + 0000 - 0101 = x + 10000

এক্স পেতে উভয় পক্ষ থেকে 10000 সরিয়ে ফেলুন, এটি মৌলিক বীজগণিত।


3

এখনও অবধি অনেক উত্তর ব্যাখ্যা করে যে দুটিটির পরিপূরকটি কেন negativeণাত্মক সংখ্যার প্রতিনিধিত্ব করতে ব্যবহৃত হয়, তবে দুটির পরিপূরক সংখ্যাটি কী তা আমাদের জানায় না, বিশেষত কেন '1' যুক্ত করা হয় না এবং বাস্তবে প্রায়শই ভুল উপায়ে যুক্ত হয়।

বিভ্রান্তিটি পরিপূরক সংখ্যার সংজ্ঞা সম্পর্কে খারাপ ধারণা থেকে আসে। পরিপূরক হ'ল অনুপস্থিত অংশ যা কিছু সম্পূর্ণ করে দেয়।

রেডিক্স বিতে একটি n অঙ্কের সংখ্যার এক্সের রেডিক্স পরিপূরক, সংজ্ঞা অনুসারে, b ^ nx। বাইনারি 4 এ 100 দ্বারা প্রতিনিধিত্ব করা হয়, যার 3 ডিজিট (n = 3) এবং 2 (বি = 2) এর একটি রেডিক্স রয়েছে। সুতরাং এর মূলমাত্রার পরিপূরক হ'ল B ^ nx = 2 ^ 3-4 = 8-4 = 4 (বা বাইনারিতে 100)।

যাইহোক, বাইনারিটিতে একটি রেডিক্সের পরিপূরক প্রাপ্তি তার হ্রাস হওয়া রেডিক্স পরিপূরক পাওয়ার মতো সহজ নয়, যা সংজ্ঞায়িত হয় (b ^ n-1) -y, রেডিক্স পরিপূরকের চেয়ে মাত্র 1 কম। একটি হ্রাস র‌্যাডিক্স পরিপূরক পেতে, আপনি কেবল সমস্ত অঙ্কগুলি ফ্লিপ করুন।

100 -> 011 (হ্রাসযুক্ত (এর) মূল্যের পরিপূরক)

মূলা (দুটি) এর পরিপূরক পেতে, আমরা সংজ্ঞা হিসাবে সংজ্ঞা হিসাবে কেবল 1 যুক্ত করি add

011 +1 -> 100 (দুইটির পরিপূরক)।

এখন এই নতুন বোঝাপড়ার সাথে, আসুন ভিনসেন্ট রামধনির দেওয়া উদাহরণটি একবার দেখুন (উপরে দ্বিতীয় প্রতিক্রিয়া দেখুন)

/ * ভিনসেন্টের শুরু

1111 দশমিক রূপান্তর করা:

সংখ্যাটি 1 দিয়ে শুরু হয়, সুতরাং এটি নেতিবাচক, সুতরাং আমরা 1111 এর পরিপূরকটি খুঁজে পাই, যা 0000 1 Tada!

ভিনসেন্টের শেষ

হিসাবে বোঝা উচিত

সংখ্যাটি 1 দিয়ে শুরু হয়, তাই এটি নেতিবাচক। সুতরাং আমরা জানি এটি কোনও দুটি মানের এক্স এর পরিপূরক। এর দুটির পরিপূরক দ্বারা প্রতিনিধিত্ব করা x সন্ধান করতে আমাদের প্রথমে এর 1 এর পরিপূরক সন্ধান করতে হবে।

দুটির এক্স এর পরিপূরক: 1111 একের পরিপূরক x: 1111-1 -> 1110; x = 0001, (সমস্ত অঙ্কগুলি ফ্লিপ করুন)

সাইনটি প্রয়োগ করুন - এবং উত্তর = -x = -1।


3

পরিপূরক শব্দটি সম্পূর্ণতা থেকে উদ্ভূত। দশমিক বিশ্বে 0 থেকে 9 পর্যন্ত সংখ্যাগুলি সমস্ত দশমিক সংখ্যা প্রকাশ করার জন্য সংখ্যা বা সংখ্যা চিহ্নগুলির পরিপূরক (সম্পূর্ণ সেট) সরবরাহ করে। বাইনারি বিশ্বে 0 এবং 1 সংখ্যার সমস্ত বাইনারি সংখ্যার প্রকাশের জন্য সংখ্যার পরিপূরক সরবরাহ করে । আসলে 0 এবং 1 টি প্রতীকগুলি অবশ্যই (পাঠ্য, চিত্র, ইত্যাদি) পাশাপাশি ইতিবাচক (0) এবং নেতিবাচক (1) উপস্থাপন করতে ব্যবহার করতে হবে। আমাদের বিশ্বে সংখ্যাটির বামে ফাঁকা স্থান শূন্য হিসাবে বিবেচিত হয়:

                  35=035=000000035.

একটি কম্পিউটার স্টোরেজ লোকেশন কোনও ফাঁকা জায়গা নেই। সমস্ত বিট (বাইনারি সংখ্যা) হয় 0 বা 1 হতে হবে। দক্ষতার সাথে মেমরি নম্বর ব্যবহার করতে 8 বিট, 16 বিট, 32 বিট, 64 বিট, 128 বিট উপস্থাপনা হিসাবে সংরক্ষণ করা যেতে পারে। 8 বিট সংখ্যা হিসাবে সঞ্চিত একটি সংখ্যা যখন 16 বিটের স্থানে স্থানান্তরিত হয় তখন সাইন এবং প্রস্থ (পরম মান) একই থাকবে। 1 এর পরিপূরক এবং 2 এর পরিপূরক উপস্থাপনা উভয়ই এটিকে সহজ করে। বিশেষ্য হিসাবে: 1 এর পরিপূরক এবং 2 এর পরিপূরক উভয়ই স্বাক্ষরিত পরিমাণের বাইনারি উপস্থাপনা যেখানে সর্বাধিক উল্লেখযোগ্য বিট (বামদিকে একটি) হ'ল সাইন বিট। 0 ধনাত্মক এবং 1টি নেতিবাচক জন্য for 2 এস পরিপূরক মানে নেতিবাচক নয়। এর অর্থ একটি স্বাক্ষরিত পরিমাণ। দশমিক হিসাবে আকারটি ধনাত্মক পরিমাণ হিসাবে প্রতিনিধিত্ব করা হয়। কাঠামোটি আরও বিট সহ একটি রেজিস্টারে প্রচার করার সময় পরিমাণ সংরক্ষণের জন্য সাইন এক্সটেনশন ব্যবহার করে:

       [0101]=[00101]=[00000000000101]=5 (base 10)
       [1011]=[11011]=[11111111111011]=-5(base 10)

ক্রিয়াপদ হিসাবে: 2 এর পরিপূরক মানে অবহেলা করা । এটি নেতিবাচক করা মানে না। এর অর্থ যদি নেতিবাচক ইতিবাচক হয়; যদি ইতিবাচক হয় নেতিবাচক। परिमाणটি পরম মান:

        if a >= 0 then |a| = a
        if a < 0 then |a| = -a = 2scomplement of a

এই ক্ষমতাটি নেগেট করে অ্যাড যোগ করে দক্ষ বাইনারি বিয়োগের অনুমতি দেয়। a - b = a + (-বি)

1 এর পরিপূরকটি নেওয়ার সরকারী উপায় হ'ল প্রতিটি সংখ্যাটির মান 1 থেকে বিয়োগ করে।

        1'scomp(0101) = 1010.

এটি প্রতিটি বিট পৃথকভাবে উল্টানো বা উল্টানো সমান। এটি নেতিবাচক শূন্যের ফলাফল যা ভালভাবে পছন্দ হয় না তাই এক থেকে 1 এর পরিপূরক যোগ করার ফলে সমস্যা থেকে মুক্তি পাওয়া যায়। 2s পরিপূরককে অগ্রাহ্য করতে বা নিতে প্রথমে 1s পরিপূরকটি নিয়ে প্রথমে 1 যুক্ত করুন।

        Example 1                             Example 2
         0101  --original number              1101
         1's comp  1010                       0010
         add 1     0001                       0001
         2's comp  1011  --negated number     0011

উদাহরণগুলিতে প্রত্যাখ্যান সাইন প্রসারিত সংখ্যার পাশাপাশি কাজ করে।

যোগ করা হচ্ছে:
1110 ক্যারি 111110 ক্যারি 0110 000110 1111 111111 যোগ 0101 যোগ 000101 এর সমান

বিয়োগ:

    1110  Carry                      00000   Carry
     0110          is the same as     00110
    -0111                            +11001
  ----------                        ----------
sum  0101                       sum   11111

লক্ষ্য করুন যে 2 এর পরিপূরক নিয়ে কাজ করার সময়, সংখ্যার বামে ফাঁকা স্থানটি ইতিবাচক সংখ্যার জন্য জিরো দিয়ে পূর্ণ হয় তবে নেতিবাচক সংখ্যার জন্য ভরা হয়। বহন সর্বদা যুক্ত করা হয় এবং এটি অবশ্যই 1 বা 0 হতে হবে।

চিয়ার্স


3

2 এর পরিপূরকটি বাইনারি সংখ্যার সংযোজক বিপরীতমুখীভাবে আসার একটি উপায়। নিজেকে এটি জিজ্ঞাসা করুন: বাইনারি আকারে একটি নম্বর দেওয়া, কোন বিট প্যাটার্নটি, যখন মূল সংখ্যায় যুক্ত হয়, ফলাফল শূন্য হয়? আপনি যদি এই বিট প্যাটার্নটি নিয়ে আসতে পারেন তবে সেই বিট প্যাটার্নটি হ'ল মূল সংখ্যার-প্রতিনিধিত্ব (অ্যাডিটিভ ইনভার্স); সংজ্ঞা অনুসারে এর সংযোজিত বিপরীতে কোনও সংখ্যার যোগ করলে সর্বদা শূন্য হয়। উদাহরণস্বরূপ: ১০১ নিন, যা দশমিক ৫ a এটি করার জন্য, 101 এর ডানদিকের বিট থেকে শুরু করুন এবং প্রতিটি পৃথক বিটের জন্য আবার একই প্রশ্নটি জিজ্ঞাসা করুন: ফলাফলটি শূন্য করার জন্য আমার "এই" বিটটিতে কোন বিট যুক্ত করা উচিত? অ্যাকাউন্টে সাধারণ বহন করা গ্রহণ করা চালিয়ে যান। আমরা 3 টি ডান বেশিরভাগ জায়গায় সম্পন্ন করার পরে (শীর্ষস্থানীয় শূন্যগুলি বিবেচনা না করে মূল সংখ্যাটি সংজ্ঞা দেয় এমন অঙ্কগুলি) শেষ বহনটি অ্যাডিটিভ ইনভার্সের বিট প্যাটার্নে চলে in তদুপরি, যেহেতু আমরা একক বাইট বলতে মূল সংখ্যায় ধারণ করতে পারি, তাই যুক্ত সংযোজিত বিপরীতে অন্যান্য সমস্ত নেতৃস্থানীয় বিটগুলিও 1 এর হওয়া উচিত যাতে কম্পিউটার যখন "সেই" স্টোরেজ টাইপ (চর) ব্যবহার করে নম্বর এবং এর সংযোজক বিপরীত যুক্ত করে এই চরের ফলাফলটি সমস্ত শূন্য হবে।

 1 1 1
 ----------
   1 0 1
 1 0 1 1 ---> additive inverse
  ---------
   0 0 0

2

আমি ল্যাভিনিওর উত্তরটি পছন্দ করেছি, তবে বিটগুলি স্থানান্তর করা কিছু জটিলতা যুক্ত করেছে। সাইন বিটকে সম্মান করার সময় বা সাইন বিটের প্রতি সম্মান না জানাতে প্রায়শই বিটগুলি সরানোর বিকল্প রয়েছে। এই সংখ্যাটি স্বাক্ষরিত হিসাবে চিহ্নিত করা (একটি ভঙ্গুর জন্য -8 থেকে 7, বাইটের জন্য -128 থেকে 127) বা পূর্ণ-পরিসরে স্বাক্ষরযুক্ত সংখ্যা (নিবলের জন্য 0 থেকে 15, বাইটের জন্য 0 থেকে 255) হিসাবে পছন্দ করা উচিত।


2

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

সুতরাং, 2 এর পরিপূরকগুলির মধ্যে যদি একটি 0x0001 হয় তবে -1 0x1111 হয়, কারণ এর ফলে 0x0000 (1 এর ওভারফ্লো সহ) এর সম্মিলিত যোগফল হবে।


1

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

  1. 0 এর একাধিক উপস্থাপনা এড়াতে
  2. অতিরিক্ত প্রবাহের ক্ষেত্রে ক্যারি বিট (কারও পরিপূরক হিসাবে) ট্র্যাক রাখা এড়াতে।
  3. সংযোজন এবং বিয়োগের মতো সাধারণ ক্রিয়াকলাপ সম্পাদন করা সহজ হয়ে যায়।

আপনি যদি বিষয়টি হাতে নিয়ে আরও বিস্তারিত ব্যাখ্যা চান, তবে আমার লেখা নিবন্ধটি এখানে চেষ্টা করে দেখুন । আশা করি এটা সাহায্য করবে!


1

টু এর পরিপূরক হ'ল একটি নেতিবাচক সংখ্যা প্রকাশের অন্যতম উপায় এবং বেশিরভাগ নিয়ামক এবং প্রসেসর 2 এর পরিপূরক আকারে একটি নেতিবাচক সংখ্যা সঞ্চয় করে


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

0

রেফারেন্স: https://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html

আমি সমস্ত বিট উল্টে 1 যোগ করি Program প্রোগ্রামিয়ালি:

  // in C++11
  int _powers[] = {
      1,
      2,
      4,
      8,
      16,
      32,
      64,
      128
  };

  int value=3;
  int n_bits=4;
  int twos_complement = (value ^ ( _powers[n_bits]-1)) + 1;

এমনকি এসেম্বেলার খুব উচ্চ স্তরের হবে। সংযোজন যুক্তির গেট স্তরের স্কিম্যাটিকটি দেখতে হবে। টি চক্র সহ। আপনি অ্যালগোরিদমিকভাবে সঠিক।
mckenzm

0

একটি প্রদত্ত সংখ্যার 2 এর পরিপূরক হ'ল। নম্বরটির 1 এর পরিপূরক 1 যোগ করে পেয়েছি। ধরা যাক, আমাদের কাছে বাইনারি নম্বর রয়েছে: 10111001101 এটি 1 এর পরিপূরক: 01000110010 এবং এটি 2 এর পরিপূরক হবে: 01000110011


0

কোনও সংখ্যার বিটওয়াইসের পরিপূরক হ'ল এতে সমস্ত বিটগুলি ফ্লিপ করা। দু'জনের পরিপূরক হিসাবে, আমরা সমস্ত বিটগুলি ফ্লিপ করি এবং একটি যুক্ত করি।

স্বাক্ষরিত পূর্ণসংখ্যার জন্য 2 এর পরিপূরক প্রতিনিধিত্ব ব্যবহার করে আমরা ইতিবাচক সংখ্যাকে তার নেতিবাচক সমতুল্যে রূপান্তর করতে 2 এর পরিপূরক অপারেশন প্রয়োগ করি। সুতরাং উদাহরণস্বরূপ নিবলগুলি ব্যবহার করে, 0001(1) 1111(-1) হয়ে যায় এবং অপটিকে আবার প্রয়োগ করে আবার ফিরে আসে 0001

শূন্যের সাথে অপারেশনের আচরণটি ইতিবাচক এবং নেতিবাচক জিরোগুলির বিশেষ পরিচালনা না করে শূন্যের জন্য একটি একক উপস্থাপনা দেওয়ার পক্ষে সুবিধাজনক। 0000পরিপূরক 1111, যা 1 যুক্ত করা হয়। 0000ইতিবাচক এবং negativeণাত্মক একের চেয়ে আমাদের এক শূন্য দেয় ওভারফ্লো ।

এই প্রতিনিধিত্বের মূল সুবিধা হ'ল স্বাক্ষরযুক্ত স্বাক্ষর পূর্ণসংখ্যার জন্য স্ট্যান্ডার্ড সংযোজন সার্কিটগুলি তাদের প্রয়োগ করার সময় সঠিক ফলাফল দেয়। উদাহরণস্বরূপ নিবলগুলিতে 1 এবং -1 যুক্ত করুন:, 0001 + 1111বিটগুলি রেজিস্টারটির বাইরে চলে গেছে, পিছনে রেখে 0000

মৃদু পরিচয়ের জন্য, দুর্দান্ত কম্পিউটারফিল বিষয়টি নিয়ে একটি ভিডিও তৈরি করেছে


0

সাধারণ শব্দে 2's Complementকম্পিউটার মেমোরিতে নেতিবাচক সংখ্যা সঞ্চয় করার একটি উপায়। যেখানে ইতিবাচক নম্বরগুলি নরমাল বাইনারি নম্বর হিসাবে সংরক্ষণ করা হয়।

আসুন এই উদাহরণটি বিবেচনা করুন,

কম্পিউটার Binary Number Systemযে কোনও সংখ্যাকে উপস্থাপন করতে ব্যবহার করে।

x = 5;

এটি হিসাবে প্রতিনিধিত্ব করা হয় 0101

x = -5;

কম্পিউটার হিটটার্স যখন -স্বাক্ষর করে, এটি এটি 2 এর পরিপূরক গণনা করে এবং এটি সংরক্ষণ করে। i.e5 = 0101 এবং এটি 2 এর পরিপূরক 1011

সংখ্যাগুলি প্রক্রিয়া করার জন্য কম্পিউটার গুরুত্বপূর্ণ নিয়মগুলি হ'ল,

  1. যদি প্রথম বিট হয় 1তবে এটি অবশ্যই negativeসংখ্যা হবে।
  2. যদি প্রথম বিট ব্যতীত সমস্ত বিট হয় 0তবে এটি একটি ধনাত্মক সংখ্যা কারণ -0সংখ্যা পদ্ধতিতে কোনও নেই (( 1000 is not -0পরিবর্তে এটি ইতিবাচক 8)
  3. সব বিট থাকলে 0তা হয় 0
  4. অন্যথায় এটি একটি positive number


-6

সহজ উত্তর:

1111 + 1 = (1) 0000। সুতরাং 1111 অবশ্যই -1 হতে হবে। তারপরে -1 + 1 = 0।

এটা আমার জন্য এই সমস্ত বুঝতে পারফেক্ট।


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

এটা উত্তর। সহজতম. আমার জন্য - সেরা।
দিমিত্রি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.