الفرق بين المراجعتين لصفحة: «JavaScript/Math/clz32»
لا ملخص تعديل |
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
||
سطر 79: | سطر 79: | ||
* مسودة المعيار [https://tc39.github.io/ecma262/#sec-math.clz32 ECMAScript Latest Draft]. | * مسودة المعيار [https://tc39.github.io/ecma262/#sec-math.clz32 ECMAScript Latest Draft]. | ||
* معيار [http://www.ecma-international.org/ecma-262/6.0/#sec-math.clz32 ECMAScript 2015 (6th Edition)]. | * معيار [http://www.ecma-international.org/ecma-262/6.0/#sec-math.clz32 ECMAScript 2015 (6th Edition)]. | ||
[[تصنيف:JavaScript]] | [[تصنيف:JavaScript|{{SUBPAGENAME}}]] | ||
[[تصنيف:JavaScript Global Objects]] | [[تصنيف:JavaScript Global Objects|{{SUBPAGENAME}}]] | ||
[[تصنيف:JavaScript Math]] | [[تصنيف:JavaScript Math|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 15:43، 28 يناير 2018
الدالة Math.clz32()
تعيد عدد الأصفار البادئة (leading zeroes) في التمثيل الثنائي (بطول 32 بت) للعدد.
البنية العامة
Math.clz32(x)
x
العدد التي ستُجرى عليه العملية.
القيمة المعادة
عدد الأصفار البادئة (leading zeros) في التمثيل الثنائي (بطول 32 بت) للعدد المعطي.
الوصف
اسم الدالة "clz32" هو اختصارٌ للعبارة "CountLeadingZeroes32".
إذا لم يكن الوسيط x قيمةً عدديةً، فسيحوّل إلى قيمةٍ عدديةٍ أولًا ثم يحوّل إلى عدد صحيح دون إشارة بالتمثيل الثنائي (بطول 32 بت).
إذا كان العدد الصحيح دون إشارة وبطول 32 بت هو 0، فالناتج هو 32، لأنَّ قيمة جميع البتات هي 0.
هذه الدالة مفيدة خصوصًا للأنظمة (والبرمجيات) التي تحوّل الشيفرات إلى JavaScript، مثل Emscripten.
لمّا كانت الدالة clz32
هي دالةٌ ساكنة (static method) تابعةٌ للكائن Math، فيجب عليك استخدامها دومًا بالشكل Math.clz32(x)
، إذ لا تستطيع استخدامها كجزء من كائن Math
خاص بك (تذكر أنَّ الكائن Math
ليس له دالةٌ بانية).
أمثلة
أمثلة على استخدام الدالة Math.clz32()
:
Math.clz32(1); // 31
Math.clz32(1000); // 22
Math.clz32(); // 32
[NaN, Infinity, -Infinity, 0, -0, null, undefined, 'foo', {}, []].filter(
function(n) {
return Math.clz32(n) !== 32
}); // []
Math.clz32(true); // 31
Math.clz32(3.5); // 30
تعويض نقص دعم المتصفحات
الطريقة الآتية لتعويض عدم دعم المتصفحات لهذه الدالة هي أكثر طريقة كفاءةً:
if (!Math.clz32) {
Math.clz32 = function(x) {
// Let n be ToUint32(x).
// Let p be the number of leading zero bits in
// the 32-bit binary representation of n.
// Return p.
if (x == null || x === 0) {
return 32;
}
return 31 - Math.floor(Math.log(x >>> 0) * Math.LOG2E);
};
}
دعم المتصفحات
الميزة | Chrome | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
الدعم الأساسي | 38 | 31 | غير مدعومة | 25 | نعم |
على النقيض من متصفح IE، يدعم متصفح Edge هذه الميزة.
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).