المتمم الثنائي
في 8 بتات يصبح −5 هو 11111011 ويصبح +5 هو 00000101. أدخل عددًا صحيحًا ذا إشارة وعرض كلمة من 2 إلى 64 بت، واحصل على نمطه الدقيق بالمتمم الثنائي، وتُرفض القيم التي لا تتسع بدل التفافها. مجانية في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- القيمة
- -5
- البتات
- 8
- ثنائي
- 11111011
- بلا إشارة
- 251
- Min
- -128
- Max
- 127
المتمم الثنائي هو التمثيل الذي تستخدمه المعالجات الحديثة للأعداد الصحيحة الموقَّعة: سلسلة بتات بعرض ثابت أعلاها إشارة والباقي يُكمل ترميزًا نمطيًا للقيمة. تقبل هذه الحاسبة عددًا صحيحًا موقَّعًا وعرض بت وتعيد الكلمة الثنائية الدقيقة لذلك العرض. القيم غير السالبة تصير بتات المقدار المعتادة محشوة بأصفار من اليسار. والقيم السالبة تصير باقي العدد بمقياس اثنين مرفوعًا إلى العرض، وهي وصفة «اعكس وأضف واحدًا» التي تُدرَّس في كل مقرر لتنظيم الحاسوب.
معنى المتمم الثنائي وكيف تُنتَج البتات
المتمم الثنائي هو التمثيل الذي تستخدمه تقريبًا كل وحدة CPU للأعداد الصحيحة الموقَّعة. لكلمة عرضها w بت يكون النطاق القابل للتمثيل الفترة المغلقة من سالب اثنين مرفوعًا إلى w ناقص واحد حتى اثنين مرفوعًا إلى w ناقص واحد، ناقص واحد. البت الأعلى دلالة هو بت الإشارة: الصفر يعني قيمة غير سالبة تُحفَظ كثنائي بلا إشارة عادي لذلك المقدار، محشوة من اليسار بأصفار حتى تصير w حرفًا تمامًا.
الواحد في بت الإشارة يعني قيمة سالبة. ترميز عدد صحيح سالب n هو أخذ الباقي الرياضي لـ n بمقياس اثنين مرفوعًا إلى w: اعكس كل بت للمقدار الموجب وأضف واحدًا واحتفظ بـ w بت تمامًا. هذا المنظور النمطي يفسّر لمَ طرح واحد من صفر يعطي سلسلة آحاد تُفَك كسالب واحد، ولمَ أصغر قيمة سالبة في w بت هي واحد يتبعه w ناقص واحد أصفار.
تطبق هذه الحاسبة تلك الهوية بحساب نمطي عبر BigInt ليبقى كل بت دقيقًا للعرض من اثنين إلى أربعة وستين. لا تلتف حول القيم الفائضة كما يفعل سجل عتاد: إن تعذّر على العدد الموقَّع أن يعيش في العرض المختار تفشل الطلب بدل إنتاج كلمة خاطئة تنتمي إلى عدد آخر في صمت. خمسة موجبة في ثمانية بتات هي 00000101؛ وخمسة سالبة في ثمانية بتات هي 11111011؛ والصفر سلسلة أصفار؛ وسالب واحد سلسلة آحاد.
هذه المعالم الأربعة تكفي للتحقق من أي عرض لاحق بنفس القاعدة النمطية.
أين يبرّر مرمِّز المتمم الثنائي استخدامه
تستخدم القاعات حاسبة متمم ثنائي ليحوّل المتعلمون قيم الواجبات الموقَّعة إلى كلمات من ثمانية وستة عشر بتًا دون قلب بت إشارة يدويًا ونسيان خطوة إضافة الواحد التي تميّز المتمم الثنائي عن المتمم الأحادي. تحتاج مولّدات الامتحان أوراكلًا حتميًا يرفض مائة وثمانية وعشرين في ثمانية بتات كفيض بدل الالتفاف إلى سالب مائة وثمانية وعشرين، لأن الالتفاف سلوك عتاد يجب أن يميّزه الطالب عن ترميز قانوني للعدد الأصلي.
مراجعات البرمجيات الثابتة المدمجة تحتاج غالبًا تحققًا سريعًا من أن ثابتًا موثَّقًا يشغل فعلًا عرض الحقل المعلن قبل حزمه في سجل أو كلمة بروتوكول أو bitfield في ورقة بيانات. يقارن مصممو البروتوكولات الكلمة المعادة بتفريغ حزمة عندما يُرسل حقل موقَّع والبت الأعلى أولًا. أبقوا الطلبات صغيرة وثبّتوا حقل binary في الاختبارات لتحصلوا على كلمات متمم ثنائي قابلة للتكرار للواجبات والمختبرات وعاملات الحافة دون إقامة سلسلة تجميع خاصة بكم.
حالات الاستخدام
فحوص القاعة والواجبات
حوّلوا قيمًا موقَّعة من ورقة التمارين إلى كلمات متمم ثنائي بثمانية أو ستة عشر بتًا وأكّدوا نتيجة العكس وإضافة واحد دون جدول بتات مرسوم يدويًا.
مراجعات البرمجيات الثابتة والبروتوكولات
تحققوا من أن ثابتًا موقَّعًا موثَّقًا يتسع فعلًا في عرض الحقل المعلن قبل حزمه في سجل أو صيغة سلك.
الأسئلة الشائعة
ماذا يحدث إن لم يتسع العدد في عرض البتات؟
الطرف لا يلتف. في ثمانية بتات النطاق القانوني من −128 إلى 127، لذا 128 خطأ وليس نمط بتات −128.
كيف تُرمَّز قيمة سالبة؟
كالباقي غير السالب للعدد بمقياس 2^w، وهو نفسه عكس بتات المقدار وإضافة واحد. سالب خمسة في ثمانية بتات هو 11111011.
ما عروض البتات المدعومة؟
أي عرض صحيح من 2 إلى 64. العروض الشائعة للتدريس والبرمجيات الثابتة هي 8 و16 و32 و64، بشرط بقاء القيمة ضمن نطاق الأعداد الصحيحة الآمنة في JavaScript.
كيف أحوّل عددًا صحيحًا ذا إشارة إلى المتمم الثنائي؟
إذا كان موجبًا فاكتبه بالنظام الثنائي وأكمل يساره بالأصفار حتى العرض المختار. وإذا كان سالبًا فاقلب بتات قيمته الموجبة وأضف واحدًا، فيصبح −5 في 8 بتات هو 11111011.
ما الفرق بين المتمم الأحادي والمتمم الثنائي؟
المتمم الأحادي يقلب كل بت في القيمة الموجبة فقط، أما المتمم الثنائي فيقلبها ثم يضيف واحدًا. هذه الخطوة الإضافية هي ما يجعل −5 في 8 بتات يساوي 11111011 ويجعل −1 صفًا من الآحاد.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/math/twos-complement \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":-5,"bits":8}'const res = await fetch("https://api.kit.forhosting.com/math/twos-complement", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": -5,
"bits": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/twos-complement",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": -5,
"bits": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/twos-complement", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":-5,"bits":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":-5,"bits":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/twos-complement", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"value": -5,
"bits": 8
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.twos_complement",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
min_bits | 2 |
max_bits | 64 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
إن لم يتسع العدد للنطاق الموقَّع للعرض المختار تفشل المهمة بـ invalid_input بدل الالتفاف الصامت. تشغّل الدالة النقية نفسها أداة المتصفح المجانية ومسار API، فلا تختلف مراجعة الواجبات عن مراجعة البرمجيات الثابتة. استدعاءات API الناجحة تكلف $0.002؛ والإدخال غير الصالح لا يُحسب.
معنى المتمم الثنائي وكيف تُنتَج البتات
يستطيع الطلبة بذلك مطابقة الواجبات بتعريف يوافق الكتب ودلائل العتاد، وتستطيع الأتمتة الوثوق بأن حمولة النجاح ترميز قانوني للعرض المعلن.
عقد الإدخال والنطاق القانوني وكيف يُبلَّغ الفيض
الحقل value هو العدد الصحيح الموقَّع المراد ترميزه. تُرفض الكسور والترميز العلمي والسلاسل الفارغة وInfinity وNaN حتى لا تصير خلية جدول معطوبة نمط بتات خاطئًا. الحقل bits هو عرض الكلمة كعدد صحيح من اثنين إلى أربعة وستين شاملًا، فيغطي عروض التدريس الشائعة int8 وint16 وint32 وint64 ويبقى رخيص الحساب. الحقول الناقصة وغير الصحيحة وbits خارج اثنين إلى أربعة وستين تفشل بالمثل ولا تُحسب. العقد fail-closed عمدًا: التفاف 128 إلى 10000000 ترميز صحيح لسالب مائة وثمانية وعشرين لا لمائة وثمانية وعشرين، ويرفض هذا الطرف طمس ذلك الفرق. أرسلوا كائن JSON بحقلين إلزاميين. يجوز أن يكون رقم JSON أو سلسلة أرقام عشرية بإشارة زائد أو ناقص اختيارية. يجب أن يبقى المقدار المطلق ضمن نطاق الأعداد الصحيحة الآمنة في JavaScript حتى يظل value المُعاد رقم JSON دقيقًا. تُقبل الأسماء البديلة n وinteger وnumber لـ value؛ وتُقبل width وbit_width وnbits لـ bits. عند النجاح تعيد الاستجابة value وbits، وتعيد binary سلسلة من أحرف صفر أو واحد طولها bits تمامًا، وتعيد unsigned ذلك النمط مقروءًا كعدد غير سالب، وتعيد min وmax لعرض النطاق القانوني بجانب الإجابة. مثال: value يساوي سالب خمسة وbits يساوي ثمانية ينتجان binary 11111011 وunsigned مائتين وواحدًا وخمسين وmin سالب مائة وثمانية وعشرين وmax مائة وسبعة وعشرين. إن خرج value عن ذلك النطاق يرمي المعالج invalid_input ويسمّي الفيض، مثل الإبلاغ أن مائة وثمانية وعشرين لا تتسع في المتمم الثنائي بثمانية بتات.
أين يبرّر مرمِّز المتمم الثنائي استخدامه
ولأن التنفيذ وحدة parse نقية من الفئة A، تشترك أداة المتصفح المجانية ومسار API في دالة واحدة ولا يمكن أن تختلفا في بت واحد. استدعاءات API الناجحة تكلف $0.002 المنشور؛ وإخفاقات التحقق لا تستهلك الرصيد؛ ولا يُحفَظ شيء بعد الاستجابة.
حالات التكامل
تصحيح الامتحانات وLMS تلقائيًا
صحّحوا بنود المتمم الثنائي بأوراكل حتمي يرفض الفيض كـ invalid_input بدل التفاف العدد إلى قيمة أخرى.
أسئلة تقنية
كيف يُحوَّل عدد صحيح موقَّع إلى ثنائي بالمتمم الثنائي؟
أرسلوا العدد كـ value وعرض الكلمة كـ bits (2–64). تعيد API سلسلة ثنائية بذلك العدد تمامًا من أحرف 0/1، مع المقدار بلا إشارة والنطاق الموقَّع القانوني.
كم تكلفة حاسبة المتمم الثنائي؟
أداة المتصفح مجانية. طلبات API تستخدم رصيد KIT المدفوع مسبقًا بسعر $0.002 لكل استدعاء ناجح؛ والإدخال غير الصالح لا يُحسب.