Math.imul()‎

من موسوعة حسوب

الدالة Math.imul()‎ تعيد ناتج ضرب المعاملين كعددين بطول 32 بت كما في لغة C.

البنية العامة

Math.imul(a, b)

a

العدد الأول.

b

العدد الثاني.

القيمة المعادة

ناتج ضرب المعاملين كعددين بطول 32 بت كما في لغة C.

الوصف

هذه الدالة تسمح بضرب الأعداد الصحيحة بطول 32 بت كما في C، وهي ميزةٌ مفيدة لبعض المشاريع مثل Emscripten.

لمّا كانت الدالة imul هي دالةٌ ساكنة (static method) تابعةٌ للكائن Math، فيجب عليك استخدامها دومًا بالشكل Math.imul()‎، إذ لا تستطيع استخدامها كجزء من كائن Math خاص بك (تذكر أنَّ الكائن Math ليس له دالةٌ بانية).

أمثلة

أمثلة عن استخدام الدالة Math.imul()‎:

Math.imul(2, 4);          // 8
Math.imul(-1, 8);         // -8
Math.imul(-2, -2);        // 4
Math.imul(0xffffffff, 5); // -5
Math.imul(0xfffffffe, 5); // -10

تعويض نقص دعم المتصفحات

يمكن محاكاة هذه الدالة كما يلي:

Math.imul = Math.imul || function(a, b) {
  var ah = (a >>> 16) & 0xffff;
  var al = a & 0xffff;
  var bh = (b >>> 16) & 0xffff;
  var bl = b & 0xffff;
  // the shift by 0 fixes the sign on the high part
  // the final |0 converts the unsigned value into a signed value
  return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
};

دعم المتصفحات

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي 28 20 غير مدعومة 16 7

على النقيض من المتصفح IE، يدعم متصفح Edge هذه الميزة.

مصادر ومواصفات