حاسبة العمليات الثنائية
60 AND 13 يساوي 12، و60 OR 13 يساوي 61، و60 XOR 13 يساوي 49. اجمع عددين صحيحين من 32 بت بعملية AND أو OR أو XOR أو بإزاحة، واحصل على ما ستحسبه لغات C وJava وJavaScript تمامًا. مجانية في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- A
- 60
- B
- 13
- Op
- Xor
- النتيجة
- 49
وهي تتبع دلالة المتمم الثنائي نفسها المستخدمة في C وJava وJavaScript، لذا يطابق الرقم الذي تتلقاه ما كان سيحسبه الكود الخاص بك، دون أي تقريب عشري ودون مفاجآت. يُعاد كلا المُعاملين مع النتيجة، وأي قيمة ليست عددًا صحيحًا حقيقيًا بعرض 32 بت تُرفض بخطأ واضح غير مُحاسَب عليه بدلًا من اقتطاعها بصمت.
ما الذي تفعله العملية الثنائية فعليًا
تعمل حاسبة العمليات الثنائية على التمثيل الثنائي للأعداد الصحيحة بدلًا من قيمتها العشرية. عندما تحسب 60 AND 13، تُحاذي الآلة بتات الرقمين — 111100 و001101 — وتحتفظ بالواحد فقط حيث يوجد واحد في كلا المُعاملين، فتنتج 12. أما OR فيحتفظ بالواحد حيث يوجد في أي منهما، فينتج 61، وXOR يحتفظ بالواحد فقط حيث تختلف البتات، فينتج 49.
هذه العمليات الثلاث هي اللبنات الأساسية لحقول الأعلام وأقنعة الأذونات والشبكات الفرعية ودوال التجزئة وصيغ الضغط. ولأن النتيجة تعتمد على المُعاملين فقط، فإن الحساب الثنائي حتمي تمامًا: الزوج نفسه من الأعداد الصحيحة يعطي الإجابة نفسها دائمًا، على أي آلة وبأي لغة تستخدم أعدادًا صحيحة 32-بت بالمتمم الثنائي. هذا بالضبط هو عقد هذه النقطة الطرفية: ترسل عددين صحيحين واسم عملية، فتستلم العدد الصحيح نفسه الذي سيحسبه الكود الخاص بك، مع تكرار المُعاملين لتكون الاستجابة واصفة لذاتها في السجل أو في أثر التدقيق.
الإزاحات وبت الإشارة ودلالة 32-بت
تنقل الإزاحات جميع بتات المُعامل الأول يسارًا أو يمينًا بالمقدار المحدد في المُعامل الثاني. الإزاحة إلى اليسار بمقدار n تضرب في اثنين أس n وتتخلص من البتات التي تسقط من الأعلى؛ وهي الطريق السريع الكلاسيكي لقوى الاثنين الصغيرة. أما الإزاحة إلى اليمين فلها نوعان، والفرق بينهما مهم.
الإزاحة الحسابية shr تنسخ بت الإشارة إلى المواضع المُخلاة، فيبقى العدد السالب سالبًا: سالب ثمانية مُزاحًا موضعًا واحدًا يمينًا يساوي سالب أربعة. أما الإزاحة المنطقية ushr فتُدخل أصفارًا بدلًا من ذلك، فتعيد تفسير القيمة كعدد بلا إشارة، وهو ما تريده عند استخراج حقول البتات من كلمة مضغوطة. واتباعًا لاصطلاح JavaScript وJava، تُستخدم البتات الخمس الدنيا فقط من مقدار الإزاحة، فالإزاحة بمقدار 33 تساوي الإزاحة بمقدار 1.
يُتحقق من كلا المُعاملين كعددين صحيحين حقيقيين بعرض 32 بت قبل المساس بأي بت، وأي إدخال خارج النطاق أو غير صحيح يُرفض بدلًا من اقتطاعه دون تنبيه.
استخدام النقطة الطرفية عمليًا
يتكون الطلب من ثلاثة حقول: عددين صحيحين a وb، والعملية op التي تكون إحدى القيم and أو or أو xor أو shl أو shr أو ushr. تُكرر الاستجابة العملية وكلا المُعاملين بجوار النتيجة الصحيحة، فيمكنك تخزينها أو تسجيلها دون إعادة بناء الاستدعاء. لا توجد حالة بين الطلبات ولا يُخزَّن شيء، فالمدخلات نفسها تُرجع النتيجة نفسها دائمًا ولا تبقى بياناتك على خادم أبدًا.
حالات الاستخدام
فك ترميز الأعلام المضغوطة وأقنعة الأذونات
تحقق مما إذا كان بت ما مفعّلًا، أو امسح علمًا، أو ادمج بتات الأذونات من حقل الأدوار باستخدام AND وOR وXOR دون كتابة سكربت مؤقت.
التحقق من حساب الإزاحات بين اللغات
أكّد ما تنتجه الإزاحة اليمنى المُشاوَرة أو المنطقية قبل نقل كود منخفض المستوى، حتى لا يصل خطأ إشارة إلى الإنتاج أبدًا.
الأسئلة الشائعة
كم التكلفة؟
ويمكن أيضًا تشغيلها مجانًا في متصفحك في هذه الصفحة بالكود نفسه تمامًا.
ما العمليات المدعومة؟
AND وOR وXOR والإزاحة إلى اليسار (shl) والإزاحة الحسابية إلى اليمين (shr) والإزاحة المنطقية إلى اليمين (ushr).
ما نطاقات الإدخال المقبولة؟
يجب أن يكون كلا المُعاملين عددين صحيحين ضمن النطاق المُشاوَر 32-بت، من -2147483648 إلى 2147483647.
كيف تُعالَج الأعداد السالبة في الإزاحات؟
shr تنسخ بت الإشارة فتبقى القيم السالبة سالبة؛ أما ushr فتملأ بأصفار وتعامل القيمة كبلا إشارة. كلتاهما تتبع دلالة المتمم الثنائي 32-بت.
ماذا يحدث إذا أزحت أكثر من 31 موضعًا؟
تُستخدم البتات الخمس الدنيا فقط من مقدار الإزاحة، كما في JavaScript وJava: الإزاحة بمقدار 33 تساوي الإزاحة بمقدار 1.
هل يُخزَّن أي شيء؟
لا. كل طلب يُحسب ثم يُتخلص منه؛ ولا توجد حالة بين الاستدعاءات.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/math/bitwise \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":60,"b":13}'const res = await fetch("https://api.kit.forhosting.com/math/bitwise", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 60,
"b": 13
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/bitwise",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 60,
"b": 13
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/bitwise", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":60,"b":13}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":60,"b":13}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/bitwise", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"a": 60,
"b": 13
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.bitwise",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تطبّق واجهة API للحاسبة الثنائية عملية على مستوى البت — AND أو OR أو XOR أو الإزاحة إلى اليسار أو الإزاحة الحسابية إلى اليمين أو الإزاحة المنطقية إلى اليمين — على عددين صحيحين بعرض 32 بت وتُرجع النتيجة الصحيحة الدقيقة.
استخدام النقطة الطرفية عمليًا
والكود نفسه الذي يعمل على شبكتنا الطرفية يعمل مجانًا في متصفحك في هذه الصفحة، أي يمكنك تجريب قناع أو التحقق من إزاحة يدويًا ولا تدفع إلا عند أتمتة الاستدعاء — $0.002 لكل طلب عبر API. وإذا غاب أحد المُعاملين أو لم يكن عددًا صحيحًا أو خرج عن النطاق المُشاوَر 32-بت، ترد النقطة الطرفية بخطأ invalid_input ولا يُحاسَب على الاستدعاء، مما يجعل ربطها مباشرة بخط أنابيب يستقبل بيانات غير موثوقة أمرًا آمنًا.
حالات التكامل
تعليم التمثيلات الثنائية وتصحيحها
أظهر للطلاب أو الزملاء بالضبط كيف يجتمع عددان صحيحان بتًا بت، بالنتيجة نفسها في المتصفح وفي API.