Math.clz32()

Функція 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 (ECMA-262)
The definition of 'Math.clz32' in that specification.
Living Standard  

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
clz32Chrome Full support 38Edge Full support 12Firefox Full support 31IE No support NoOpera Full support 25Safari Full support 7WebView Android Full support 38Chrome Android Full support 38Firefox Android Full support 31Opera Android Full support 25Safari iOS Full support 7Samsung Internet Android Full support 3.0nodejs Full support 0.12

Legend

Full support  
Full support
No support  
No support

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