Функція Math.clz32() повертає кількість ведучих нульових бітів 32-бітного двоїчного уявлення даного числа.

Синтаксис

Math.clz32(x)

Аргументи

x
Число.

Результат

Кількість ведучих нульових бітів 32-бітного двоїчного уявлення даного числа.

Опис

"clz32" - це скорочено від CountLeadingZeroes32.

Якщо аргумент x не є числом, він спочатку буде приведений до числового формату, а потім - до 32-бітного беззнакового цілого.

Якщо в результаті 32-бітне беззнакове ціле число є нулем - функція повертає 32, тому що всі його біти являються нульовими.

Ця функція, зокрема, дуже помічна для систем, що компілюють щось у JS. Наприклад - Emscripten.

Приклади

Застосування 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);
  };
}

Специфікації

Специфікація Статус документу Примітка
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Math.clz32' in that specification.
Standard Первинне визначення.
ECMAScript Latest Draft (ECMA-262)
The definition of 'Math.clz32' in that specification.
Draft  

Підтримка у браузерах

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Basic supportChrome Full support 38Edge Full support YesFirefox Full support 31IE No support NoOpera Full support 25Safari Full support YesWebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 31Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support 0.12

Legend

Full support  
Full support
No support  
No support

Дивіться також

Мітки документа й учасники

Зробили внесок у цю сторінку: AdriandeCita
Востаннє оновлена: AdriandeCita,