This is a new technology, part of the ECMAScript 2015 (ES6) standard.
This technology's specification has been finalized, but check the compatibility table for usage and implementation status in various browsers.
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.
Sintaxi
Math.clz32(x)
Paràmetres
x
- Un nombre.
Descripció
"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.
Exemples
Utilitzar 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
Polyfill
Aquesta funció polyfill utilitza 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 } })();
Especificacions
Especificació | Estat | Comentaris |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Math.clz32' in that specification. |
Standard | Definició inicial. |
Compatibilitat amb navegadors
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suport bàsic | 38 | 31 (31) | Not supported | 25 | Not supported |
Característica | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suport bàsic | Not supported | Not supported | 31.0 (31) | Not supported | Not supported | Not supported |