logo

ما هو تكملة 2s في C؟

يتم إنشاء تكملة 2s في لغة C من تكملة 1s في لغة C. وكما نعلم أن تكملة 1s للرقم الثنائي يتم إنشاؤها عن طريق تحويل البت 1 إلى 0 ومن 0 إلى 1؛ يتم إنشاء المكمل 2s للرقم الثنائي عن طريق إضافة واحد إلى المكمل 1s للرقم الثنائي.

باختصار، يمكننا القول أن مكمل 2s في C يتم تعريفه على أنه مجموع مكمل الواحد في C وواحد.

تكملة 2s في C

في الشكل أعلاه، الرقم الثنائي يساوي 00010100، ويتم حساب مكمله بتحويل البت 1 إلى 0 و0 إلى 1 بالعكس. لذلك يصبح مكمل الفرد 11101011. وبعد حساب مكمله، نحسب مكمل الاثنين بإضافة 1 إلى مكمل الواحد، وتكون نتيجته 11101100.

لنقم بإنشاء برنامج مكمل 2S.

 #include int main() { int n; // variable declaration printf('Enter the number of bits do you want to enter :'); scanf('%d',&n); char binary[n+1]; // binary array declaration; char onescomplement[n+1]; // onescomplement array declaration char twoscomplement[n+1]; // twoscomplement array declaration int carry=1; // variable initialization printf('
Enter the binary number : '); scanf('%s', binary); printf('%s', binary); printf('
The ones complement of the binary number is :&apos;); // Finding onescomplement in C for(int i=0;i<n;i++) { if(binary[i]="=&apos;0&apos;)" onescomplement[i]="1" ; else } onescomplement[n]="" printf('%s',onescomplement); printf('
the twos complement of a binary number is : '); finding twoscomplement in c for(int i="n-1;">=0; i--) { if(onescomplement[i] == &apos;1&apos; &amp;&amp; carry == 1) { twoscomplement[i] = &apos;0&apos;; } else if(onescomplement[i] == &apos;0&apos; &amp;&amp; carry == 1) { twoscomplement[i] = &apos;1&apos;; carry = 0; } else { twoscomplement[i] = onescomplement[i]; } } twoscomplement[n]=&apos;&apos;; printf(&apos;%s&apos;,twoscomplement); return 0; } </n;i++)>

انتاج |

تكملة 2s في C

تحليل البرنامج أعلاه،

  • أولاً، نقوم بإدخال عدد البتات، ويتم تخزينها في ملف ' ن ' عامل.
  • بعد إدخال عدد البتات، نعلن عن مصفوفة الأحرف، أي: شار ثنائي [ن+1]، الذي يحمل الرقم الثنائي. ال ' ن ' هو عدد البتات التي أدخلناها في الخطوة السابقة؛ فهو يحدد بشكل أساسي حجم المصفوفة.
  • نعلن عن صفيفين آخرين، أي، مكمل واحد[ن+1] ، و مكملان [ن+1]. ال مكمل واحد[ن+1] تحتوي المصفوفة على مكمل الآحاد لعدد ثنائي في حين أن مكملان[n+1] تحتوي المصفوفة على تكملة الرقم الثنائي.
  • تهيئة يحمل متغير وتعيين قيمة واحدة لهذا المتغير.
  • بعد التصريحات، نقوم بإدخال الرقم الثنائي.
  • الآن، نقوم ببساطة بحساب مكمل الواحد للرقم الثنائي. للقيام بذلك، نقوم بإنشاء حلقة التي تتكرر عبر المصفوفة الثنائية، ل(int i=0;i. في حلقة for، يتم التحقق من الحالة سواء كانت البتة 1 أو 0. إذا كانت البتة 1 إذن مكمل واحد[i]=0 آخر مكمل واحد[i]=1 . بهذه الطريقة، يتم إنشاء تكملة الرقم الثنائي.
  • بعد حساب المكمل، نقوم بإنشاء المكمل 2s للرقم الثنائي. للقيام بذلك، نقوم بإنشاء حلقة الذي يتكرر من العنصر الأخير إلى عنصر البداية. في حلقة for، لدينا ثلاثة شروط:
    • إذا كانت بتة المكمل[i] تساوي 1 وقيمة الحمل هي 1، فإننا نضع 0 في المكملين[i].
    • إذا كانت وحدة بت المكمل[i] تساوي 0 وقيمة الحمل هي 1، فإننا نضع 1 في المكمل الثنائي[i] و0 في الحمل.
    • إذا كان الشرطان السابقان خاطئين، فإن المكمل الواحد[i] يساوي المكمل الثاني[i].

الأعداد الصحيحة الموقعة يتم تمثيلها بشكل متكرر في لغة C باستخدام تدوين تكملة اثنين . باستخدام نفس التمثيل الثنائي يقدم آلية للتعبير عن كليهما إيجابي و الأعداد الصحيحة السلبية . ال البت الأكثر أهمية (MSB) يستخدم ك بت التوقيع في تمثيل تكملة اثنين ، أين 0 يدل على عدد صحيح موجب ، و 1 يدل على أ عدد السلبي .

بدءا من أ رقم سلبي القيمة المطلقة في شكل ثنائي، يمكنك أن تأخذ مكمل واحد (نفي bitwise) من تلك القيمة للحصول على متمم ثنائي تمثيل عدد صحيح سلبي . قمت بإضافة 1 إلى القيمة الناتجة للحصول على تمثيل متمم ثنائي .

ال ترميز مكمل لاثنين في C يمكن أن تمثل الأعداد الصحيحة الموقعة ويمكنه إجراء عمليات حسابية سريعة. إحدى فوائد استخدام المكمل الثنائي هي القدرة على القيام بذلك إضافة و الطرح باستخدام نفس العمليات الثنائية كما هو الحال مع الأرقام غير الموقعة.

ال أرقام ثنائية تضاف معا مثل الأعداد الصحيحة غير الموقعة عند إضافة تكملة اثنين. تنفيذ من موقع الشيء الحاسم الرئيسي يتم تجاهله فقط. وبسبب هذه الحقيقة، التعامل الأرقام الموقعة مختلف ليس من الضروري، والإضافة تصبح بسيطة.

النظر في إضافة -5 و -3 باستخدام تكملة 8 بت اثنين التمثيل، على سبيل المثال:

رقم ثنائي ل -5 يكون 11111011.

رقم ثنائي ل -3 يكون 11111101 .

تنفيذ الإضافة:

 11111011 (-5) + 11111101 (-3) ------------- 111110100 (-8) 

الجواب هو 111110100 ، والتي في متمم ثنائي مساوي ل -8 .

على غرار الجمع، يمكن إجراء الطرح عن طريق معالجة المعامل الثاني تكملة اثنين كما لو كانت إضافة. بمعنى آخر، يمكنك إضافة تكملة الرقم السالب إلى المعامل الأول لإزالته.

على سبيل المثال، متى -3 يتم طرحها من -5 :

في الثنائية، -5 يمثلها 11111011 و -(-3) بواسطة 00000011 (تكملة اثنين من -3 )

إجراء عملية الطرح

 11111011 (-5) + 00000011 (+3) ------------- 11111110 (-8) 

والنتيجة هي 11111110 ، وهو في تكملة اثنين يساوي -8 .

خاتمة:

في ج، تكملة 2S هو تمثيل ثنائي لرقم سالب يتم إنشاؤه عن طريق إضافة رقم إلى الرقم تكملة 1S . تستخدم أنظمة الكمبيوتر هذه الفكرة في كثير من الأحيان لتمثيل الأرقام الموقعة وتنفيذ العمليات الحسابية بكفاءة.

للحصول على تكملة 2S من عدد صحيح ثنائي، يجب على المرء أولا تحديد تكملة 1S من الرقم عن طريق التقليب البتات. بعد ذلك تم تمثيل تكملة 2S يتم الحصول عليها بواسطة إضافة واحدة إلى تكملة 1S . ال البت الأكثر أهمية (MSB) سوف تعمل بمثابة بت إشارة من خلال التعبير عما إذا كان الرقم إيجابي أو سلبي .

حساب ال تكملة 2S لعدد صحيح ثنائي معين يظهر في برنامج C المرفق. تتم مطالبة المستخدم بإدخال كل من عدد ثنائي وعدد البتات. بعد ذلك يقوم البرنامج بالإجراءات المطلوبة للحصول على مكمل 1s ومن ثم تكملة 2S . ثم يتم عرض النتائج.

في علوم الكمبيوتر والبرمجة، من الضروري فهم تكملة 2S التمثيل لأنه يجعل من الممكن التعامل مع القيم السالبة المعبر عنها بالثنائي بشكل فعال. التي تجعل علاوة على ذلك الطرح ، و العمليات المنطقية أبسط على حد سواء إيجابي و أرقام سلبية . مدى ال أعداد صحيحة قابلة للتمثيل متماثل حول صفر بسبب تكملة 2S التمثيل، مما يجعلها مناسبة للعمليات العددية المختلفة.

يمكن للمبرمجين إجراء عمليات حسابية، والعمل مع البيانات الثنائية، وتصميم خوارزميات باستخدام الأعداد الصحيحة الموقعة في لغة C ولغات البرمجة الأخرى من خلال فهم فكرة تكملة 2s واستخدامها بشكل صحيح.