حاسبة الأصفار البادئة
احسب البتات الصفرية الواقعة فوق أعلى بت قيمته واحد في كلمة ذات عرض ثابت: العدد 16 في 8 بتات هو 00010000، فالنتيجة 3. وترى أيضًا الطول بالبتات والتمثيل الثنائي الكامل. مجانية في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- القيمة
- 16
- العرض
- 8
- الأصفار البادئة
- 3
- طول البتات
- 5
- ثنائي
- 00010000
- أكثر بت أهمية
- 4
عدّ الأصفار البادئة — CLZ أو LZCNT أو مسح مشتق من BSR — هو عدد بتات الصفر التي تعلو أعلى بت واحد في عدد صحيح بلا إشارة داخل كلمة ثابتة العرض. تصدر المترجمات هذا العدّ للوغاريتم الصحيح بالأساس اثنين، ولتطبيع الجزء المعنوي قبل إزاحة، وللعثور على أول علم مفعّل في سجل حالة. تقبل حاسبة الأصفار البادئة هذه عددًا صحيحًا غير سالب بأرقام عشرية أو ست عشري ببادئة 0x أو ثنائي ببادئة 0b أو ثماني ببادئة 0o، مع حجم كلمة من ثمانية أو ستة عشر أو اثنين وثلاثين أو أربعة وستين بتًا. وتعيد عدّ CLZ وطول البتات للمقدار وسلسلة ثنائية مبطّنة إلى العرض حتى تروا الأصفار الأمامية، وفهرسًا يبدأ من الصفر لأعلى بت واحد عندما لا تكون القيمة صفرًا. والصفر حالة أصيلة: كل بت صفر بادئ، فيساوي العدّ العرض المختار.
ماذا يعني عدّ الأصفار البادئة على كلمة ثابتة العرض
تنظر تعليمات العتاد التي تعدّ الأصفار البادئة إلى سجل بعرض معلوم، لا إلى عدد صحيح رياضي مجرد. في كلمة من ثمانية بتات تكون القيمة ستة عشر هي النمط 00010000: ثلاثة أصفار تعلو أعلى واحد، فيكون CLZ ثلاثة. وفي كلمة من اثنين وثلاثين بتًا يصبح المقدار نفسه 00000000000000000000000000010000 ويصير CLZ سبعة وعشرين، لأن أربعة وعشرين صفرًا عاليًا إضافيًا تظهر عند توسيع السجل.
جبريًا طول البتات لعدد صحيح موجب هو أرضية لوغاريتم القيمة بالأساس اثنين زائد واحد، وعدّ الأصفار البادئة هو عرض الكلمة ناقص ذلك الطول. وعندما تكون القيمة صفرًا لا يوجد بت واحد أعلى أهمية؛ فكل موضع صفر بادئ، ويساوي العدّ العرض. تلك اتفاقية LZCNT على x86 وCLZ على ARM وclz على RISC-V ودوال المترجم المدمجة __builtin_clz وleadingZeroBitCount: تبلغ عن حجم الكلمة كاملًا لمعامل صفري بدل أن تترك النتيجة غير معرّفة كما كانت تفعل أحيانًا ترميزات BSR القديمة.
ترمّز هذه القدرة تلك الهوية تمامًا. وحقل الثنائي المبطّن هو بالضبط width من أحرف الصفر والواحد بلا بادئة 0b، فيظهر الأصفار البادئة دون خطوة تحويل ثانية. ويعيد حقل formula صياغة هوية اللوغاريتم حتى تقتبس الوثائق المولَّدة وتعليقات الاختبار الجملة نفسها التي استخدمتها الحاسبة.
أين تُثبت حاسبة الأصفار البادئة قيمتها
يُصدر مؤلفو المترجمات والآلات الافتراضية CLZ أو بديلًا برمجيًا للوغاريتم الصحيح بالأساس اثنين، وللعثور على أعلى علم، ولتطبيع الذيل قبل إزاحة بأسلوب الفاصلة العائمة؛ ويحتاجون مرجعًا يطابق العتاد عند الصفر وعند كل عرض مدعوم حتى لا تقبل مجموعات الانحدار في صمت خطأ الزيادة أو النقصان بواحد في هوية اللوغاريتم. ويقرأ مؤلفو البرمجيات الثابتة والمشغّلات سجلات الحالة والتمكين ويريدون فهرس أعلى بت معلّق دون كتابة مساعد clz محمول في كل لغة يلمسونها.
وتُطبّع مكتبات التعمية والأعداد الصحيحة الكبيرة طرفًا قبل إزاحة يسار أو قبل عدّ البتات ذات الدلالة في قيمة لمرة واحدة، وحاسبة ثابتة العرض أقصر سبيل للتحقق من تلك المساعدات أمام حالات من ثمانية إلى أربعة وستين بتًا بما فيها الطرف الصفري كله. وتكتسب مواقع المحتوى التي تتصدر لعبارة حاسبة الأصفار البادئة أداة مجانية حية يطابق مسار متصفحها مسار الأتمتة المدفوع مسبقًا على الوحدة النقية نفسها.
حالات الاستخدام
مراجع CLZ للمترجم والآلة الافتراضية
تحققوا من اللوغاريتم الصحيح بالأساس اثنين وخفض LZCNT وسلوك المعامل الصفري أمام اتفاقيات العتاد بعرض 8/16/32/64 بتًا في مجموعات انحدار المترجمات والمفسرات.
تطبيع السجلات والأعلام
اعرفوا كم صفرًا عاليًا يعلو أعلى بت واحد في كلمة حالة أو تمكين قبل إزاحة حقل إلى موضع قانوني.
تعليم طول البتات واللوغاريتم بالأساس اثنين
دعوا الطلاب يقارنون الثنائي المبطّن يدويًا وعدّ CLZ لحجم كلمة مختار دون تشغيل محاكي معالج.
الأسئلة الشائعة
ماذا يعيد عدّ الأصفار البادئة للصفر؟
وذلك يطابق LZCNT وCLZ في ARM ودوال المترجم المدمجة.
لماذا يجب اختيار 8 أو 16 أو 32 أو 64 بتًا؟
يُعرَّف CLZ على سجل ثابت العرض. وللمقدار نفسه عدّ مختلف في بايت من 8 بتات عنه في كلمة من 32؛ والتعداد المغلق يطابق عروض المعالج واللغات الشائعة.
هل يمكنني إدخال العدد بالنظام الست عشري أو الثنائي؟
نعم. اكتبه بالأرقام العشرية، أو ست عشريًا مع 0x، أو ثنائيًا مع 0b، أو ثمانيًا مع 0o. يُقرأ العدد بلا إشارة ويجب أن يتسع في العرض المختار، لذلك يُرفض مع 8 بتات أي عدد يحتاج إلى بت تاسع.
ما علاقة الأصفار البادئة باللوغاريتم للأساس اثنين؟
الطول بالبتات لعدد موجب هو الجزء الصحيح من لوغاريتمه للأساس اثنين زائد واحد، وعدد الأصفار البادئة هو عرض الكلمة ناقص هذا الطول. للعدد 16 في 8 بتات يكون الطول 5 والنتيجة 3.
كيف يُرقَّم موضع البت الأعلى قيمة؟
تُرقَّم المواضع بدءًا من الصفر عند البت الأدنى قيمة، كما هو معتاد في البرمجة. لذلك يظهر البت الأعلى قيمة للعدد 16 في الموضع 4، أما القيمة صفر فليس فيها بت يُشار إليه.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/count-leading-zeros \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"16","width":8}'const res = await fetch("https://api.kit.forhosting.com/dev/count-leading-zeros", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "16",
"width": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/count-leading-zeros",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "16",
"width": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/count-leading-zeros", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"16","width":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"16","width":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/count-leading-zeros", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"value": "16",
"width": 8
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.count_leading_zeros",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
وتشغّل الوحدة النقية نفسها أداة المتصفح المجانية ومسار API، فلا تختلف ملاحظات المترجم واختبارات الوحدة وسكربتات الإنتاج على حالة حدّ لعرض السجل.
ماذا يعني عدّ الأصفار البادئة على كلمة ثابتة العرض
ترقيم البتات للحقل الاختياري most_significant_bit يتبع العرف المعتاد بأن البت صفر هو الأقل أهمية، لذا تُبلِغ ستة عشر عن most_significant_bit أربعة.
عقد الإدخال والعروض وسلوك الخطأ
تُفسَّر القيمة بلا إشارة ويجب أن تتسع في ذلك العدد من البتات: ستة عشر جائزة عند ثمانية بتات، ومئتان وستة وخمسون ليست كذلك لأنها تحتاج بتًا تاسعًا. أرسلوا بجسم JSON عبر POST حقلين إلزاميين. value عدد صحيح غير سالب مكتوب كسلسلة أرقام عشرية أو حرفي ست عشري 0x أو حرفي ثنائي 0b أو حرفي ثماني 0o؛ ويُقبل كذلك رقم JSON يكون عددًا صحيحًا غير سالب آمنًا، وتشير الأسماء البديلة n وinteger وx إلى الحقل نفسه. width هو حجم الكلمة بلا إشارة ويجب أن ينتمي إلى المجموعة المغلقة ثمانية أو ستة عشر أو اثنان وثلاثون أو أربعة وستون — عروض تعليمات CLZ الشائعة — ويُقبل أيضًا باسم bits أو bit_width. الحقول الناقصة والسلاسل الفارغة والقيم المنطقية والإشارات والأعداد الكسرية والبادئات المجهولة وwidth خارج التعداد تفشل بـ invalid_input يسمّي القاعدة، ولا تُحتسب تلك الإخفاقات. عند النجاح يعيد الجسم value كسلسلة عشرية قانونية بلا أصفار بادئة (عدا العدد صفر نفسه) وwidth رقمًا، ثم يعرض leading_zeros العدّ الرئيس وbit_length عرض المقدار (صفرًا عندما تكون القيمة صفرًا) وbinary سلسلة البتات المبطّنة إلى العرض. يظهر most_significant_bit فقط عندما لا تكون القيمة صفرًا؛ ويُحذف بدل تعيينه إلى null حتى يبقى الخرج الاختياري صادقًا. مثال: value ستة عشر وwidth ثمانية يعطيان leading_zeros ثلاثة وbit_length خمسة وbinary 00010000 وmost_significant_bit أربعة. مثال: value صفر وwidth اثنان وثلاثون يعطيان leading_zeros اثنين وثلاثين وbit_length صفرًا وسلسلة من اثنين وثلاثين حرف صفر، من دون most_significant_bit.
أين تُثبت حاسبة الأصفار البادئة قيمتها
ويمكن لمن يدرّسون عوامل البت والتطبيع بأسلوب IEEE إعطاء الطلاب قيمة وعرضًا ومقارنة الثنائي المبطّن يدويًا مع عدّ CLZ بخدمة حتمية بدل محاكي ISA كامل. ولأنها من مستوى parse A، تكلف كل استدعاء ناجح السعر الأساسي المنشور $0.002 بلا رموز نموذج ولا شبكة صادرة، ولا يستهلك الإدخال غير الصالح الرصيد. أبقوا الطلبات صغيرة وثبّتوا leading_zeros والسلسلة الثنائية المبطّنة في الاختبارات لتحصلوا على نتائج CLZ قابلة لإعادة الإنتاج لـ SDK ومقتطفات CMS وعقد الحافة دون إقامة مكتبة محلية خاصة لمسح البتات.
أسئلة تقنية
كيف نعدّ بتات الأصفار البادئة لعدد صحيح؟
أرسلوا value (عشريًا غير سالب أو 0x أو 0b أو 0o) وwidth (8 أو 16 أو 32 أو 64). تعيد API القيمة leading_zeros = width عندما يكون value هو 0، وإلا width − floor(log2(value)) − 1.
هل يمكن إرسال ست عشري أو رقم JSON؟
نعم. يقبل value أرقامًا عشرية أو ست عشري 0x أو ثنائيًا 0b أو ثمانيًا 0o أو عددًا صحيحًا JSON غير سالب آمنًا. ويجب أن تتسع القيمة بعدُ في العرض المختار بلا إشارة.
كم تكلفة حاسبة الأصفار البادئة؟
أداة المتصفح مجانية. تستخدم طلبات API رصيد KIT المدفوع مسبقًا بمقدار $0.002 لكل استدعاء ناجح؛ ولا يُحتسب الإدخال غير الصالح.