--- title: Math.clz32() slug: Web/JavaScript/Reference/Global_Objects/Math/clz32 translation_of: Web/JavaScript/Reference/Global_Objects/Math/clz32 original_slug: Web/JavaScript/Referencia/Objectes_globals/Math/clz32 ---
La funció Math.clz32() retorna el nombre de zeros a l'esquerra que apareixen en una representació binària de 32 bits per a un nombre.
Math.clz32(x)
x"clz32" és una abreviació de CountLeadingZeroes32.
Si x no és un nombre, primer es convertirà a un nombre, i després es convertirà a un nombre sencer de 32 bits sense signe.
Si el nombre sencer sense signe de 32 bits és 0, la funció retornarà 32 ja que tots els bits són 0.
Aquesta funció és particulament útil per a sistemes que compilin en JavaScript, com ara 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
Aquesta funció polyfill utilitza {{jsxref("Math.imul")}}.
Math.clz32 = Math.clz32 || (function () {
'use strict';
var table = [
32, 31, 0, 16, 0, 30, 3, 0, 15, 0, 0, 0, 29, 10, 2, 0,
0, 0, 12, 14, 21, 0, 19, 0, 0, 28, 0, 25, 0, 9, 1, 0,
17, 0, 4, , 0, 0, 11, 0, 13, 22, 20, 0, 26, 0, 0, 18,
5, 0, 0, 23, 0, 27, 0, 6, 0, 24, 7, 0, 8, 0, 0, 0]
// Adaptat d'un algorisme trobat a Hacker's Delight, pàgina 103.
return function (x) {
// Tingueu en compte que les variables no tenen perquè ser les mateixes.
// 1. On n = ToUint32(x).
var v = Number(x) >>> 0
// 2. On p és el nombre de zeros a l'esquerra en la representació binària de 32 bits de n.
v |= v >>> 1
v |= v >>> 2
v |= v >>> 4
v |= v >>> 8
v |= v >>> 16
v = table[Math.imul(v, 0x06EB14F9) >>> 26]
// Retorna p.
return v
}
})();
| Especificació | Estat | Comentaris |
|---|---|---|
| {{SpecName('ES6', '#sec-math.clz32', 'Math.clz32')}} | {{Spec2('ES6')}} | Definició inicial. |
| Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Suport bàsic | {{CompatChrome("38")}} | {{CompatGeckoDesktop("31")}} | {{CompatNo}} | {{CompatOpera("25")}} | {{CompatNo}} |
| Característica | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Suport bàsic | {{CompatNo}} | {{CompatNo}} | {{CompatGeckoMobile("31")}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |