حاسبة مسافة هامينغ بين عددين صحيحين
مسافة هامينغ بين عددين صحيحين هي عدد مواضع البتات التي تختلف فيها تمثيلاتهما الثنائية.
شغّل الأداة مجانًا
تطبق هذه الحاسبة الطريقة القياسية: تحسب XOR على مستوى البت للعددين، ثم تعد البتات المضبوطة في النتيجة. يمكنكم مقارنة الأعلام والأقنعة والمعرفات المدمجة والحالات المرمزة ومتجهات الاختبار من دون محاذاة السلاسل الثنائية يدويا. تقبل الأعداد الصحيحة الآمنة غير السالبة في JavaScript، بما فيها الصفر، وتعرض قيمة XOR وتمثيلها الثنائي.
ما الذي تقيسه مسافة هامينغ للأعداد الصحيحة
عُرّفت مسافة هامينغ أصلا للسلاسل المتساوية في الطول، لكن يمكن تفسير الأعداد الصحيحة طبيعيا كسلاسل بتات. يكتب كل عدد بالأساس الثنائي، وتفترض أصفار بادئة عندما يكون أحد التمثيلين أقصر. يضاف واحد إلى المسافة عندما يحتوي الموضع على صفر في عدد وواحد في الآخر، أما المواضع المتطابقة فلا تضاف. لذلك تكشف مقارنة أقنعة الصلاحيات عدد الأعلام التي تغيرت، وتبين مقارنة الحالات المدمجة عدد السمات الثنائية التي تبدلت. النتيجة عدد مواضع وليست الفرق الحسابي بين العددين؛ فقد يختلف عددان متقاربان في بتات كثيرة، وقد يختلف عددان متباعدان في بت واحد. تقبل القدرة أعداد JavaScript الصحيحة الآمنة غير السالبة لضمان تمثيل دقيق في معالج API والمتصفح. الصفر صالح، ومسافته من أي عدد تساوي عدد البتات المضبوطة في ذلك العدد.
كيف ينتج XOR وعد البتات الإجابة
عملية أو الحصرية، المعروفة باسم XOR، هي العملية الأساسية لأن جدول حقيقتها يطابق تعريف اختلاف البت. فهي تنتج صفرا عندما يتطابق بتان متحاذيان، وواحدا عندما يختلفان. بعد تطبيق XOR على العددين تصبح المهمة عد البتات التي قيمتها واحد. يستخدم التنفيذ طريقة Brian Kernighan؛ ففي كل دورة يؤدي طرح واحد من القيمة الحالية ثم تطبيق AND إلى مسح أدنى بت مضبوط. وهكذا تعمل الحلقة مرة لكل موضع مختلف، لا مرة لكل موضع محتمل. تستخدم حسابات BigInt داخليا لمنع معاملات البت المعتادة في JavaScript من تقليص القيم خفية إلى أعداد صحيحة موقعة من 32 بت. تبقى قيمة XOR المعادة آمنة كعدد عادي لأنها لا تستطيع ضبط بت أعلى من البتات الموجودة في المدخلين الآمنين المتحقق منهما. كما يعاد تمثيل XOR الثنائي لتسهيل الفحص وتصحيح الأخطاء والتعليم.
اختيار المدخلات وقراءة النتيجة
أدخلوا القيمتين في الحقلين a وb. يجب أن تكون كل قيمة عددا صحيحا من الصفر إلى أكبر عدد تمثله JavaScript بدقة؛ وترفض الكسور والقيم السالبة والسلاسل الرقمية واللانهاية والحقول المفقودة. تحتوي الاستجابة على xor وbinary_xor وhamming_distance. تفيد قيمة xor العشرية في عمليات الأقنعة اللاحقة، ويعرض binary_xor المواضع المختلفة، ويقدم hamming_distance عددها. تحذف الأصفار البادئة لأنها لا تغير المسافة. إذا تجاوزت القيم الأصلية نطاق العدد الصحيح الآمن، فاحتفظوا بها خارج هذه القدرة بدلا من تقريبها، لأن التقريب قد يغير البتات الدنيا ويعطي مسافة مضللة. يمكن للتكاملات مقارنة العدد بعتبة، أو قبول رمز تغير فيه بت واحد، أو فحص متجهات معروفة. العملية متناظرة؛ فتبديل a وb لا يغير الناتج، ومقارنة أي قيمة بنفسها تعطي صفرا دائما.
حالات الاستخدام
مقارنة أقنعة الميزات أو الصلاحيات
عدوا الأعلام التي تغيرت بين قناعين صحيحين وافحصوا قناع XOR الذي يحددها.
التحقق من شيفرة معالجة البتات
أنشئوا مسافة متوقعة حتمية وتمثيل XOR للاختبارات أو التمارين أو فحص الخوارزميات.
قياس تغير الحالات المرمزة
لخصوا السمات الثنائية المختلفة بين حالتين مدمجتين من دون الخلط بين تغير البت والطرح العددي.
الأسئلة الشائعة
ما تكلفة هذه القدرة؟
يكلف كل طلب API مقدار $0.002. ويمكن إجراء الحساب الحتمي نفسه في المتصفح أيضا.
لماذا يستخدم XOR لحساب مسافة هامينغ؟
يضع XOR بتا قيمته واحد حيث تختلف بتات المدخلين تماما، ولذلك يعطي عدها المسافة مباشرة.
هل تحسب الأصفار البادئة؟
لا. فهي تطابق الأصفار البادئة الضمنية للعدد الآخر غير السالب ولا تزيد المسافة.
هل يمكن إدخال أعداد صحيحة سالبة؟
لا. تتطلب القيم السالبة اختيار عرض وتمثيل موقع، ولذلك تقبل القدرة الأعداد غير السالبة فقط.
ما أكبر قيمة مقبولة؟
يمكن أن يكون كل مدخل عددا صحيحا آمنا غير سالب في JavaScript حتى 9,007,199,254,740,991.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/hamming-distance-int \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":29,"b":15}'const res = await fetch("https://api.kit.forhosting.com/dev/hamming-distance-int", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 29,
"b": 15
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/hamming-distance-int",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 29,
"b": 15
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/hamming-distance-int", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":29,"b":15}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":29,"b":15}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/hamming-distance-int", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"a": 29,
"b": 15
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.hamming_distance_int",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |