La fonction Math.clz32() renvoie le nombre de zéros de tête dans la représentation binaire sur 32 bits d'un nombre.

Syntaxe

Math.clz32(x)

Paramètres

x
Un nombre.

Valeur retournée

Le nombre de bits à zéro en tête de la représentation binaire sur 32 bits du nombre donné.

Description

"clz32" est un raccourci pour CountLeadingZeroes32 (en français, « compter les zéros de tête »).

Si x n'est pas un nombre, il sera d'abord converti en nombre puis converti en un entier non signé sur 32 bits.

Si l'entier non signé sur 32 bits résultant vaut 0, la fonction renverra 32, car tous les bits valent 0.

Cette fonction est particulièrement utile aux systèmes qui compilent du code JavaScript, comme Emscripten.

Exemples

Utilisation de Math.clz32()

Math.clz32(1)                // 31
Math.clz32(1000)             // 22 
Math.clz32()                 // 32

[NaN, Infinity, -Infinity, 0, -0, null, undefined, 'machin', {}, []].filter(
function (n) {
  return Math.clz32(n) !== 32
})                           // []

Math.clz32(true)             // 31
Math.clz32(3.5)              // 30

Émulation

L'émulation suivante est la plus efficace.

if (!Math.clz32) {
  Math.clz32 = function(x) {
    // Soit n égal à ToUint32(x).
    // Soit p le nombre de bits à zéro en tête 
    // de la représentation binaire sur 32 bits de n.
    // Retourner p.    
    if (x == null || x === 0) {
      return 32;
    }
    return 31 - Math.floor(Math.log(x >>> 0) * Math.LOG2E);
  };
}

Spécifications

Spécification Statut Commentaire
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Math.clz32' dans cette spécification.
Standard Définition initiale.
ECMAScript Latest Draft (ECMA-262)
La définition de 'Math.clz32' dans cette spécification.
Projet  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simpleChrome Support complet 38Edge Support complet OuiFirefox Support complet 31IE Aucun support NonOpera Support complet 25Safari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 31Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet 0.12

Légende

Support complet  
Support complet
Aucun support  
Aucun support

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight, NemoNobobyPersonne, teoli
Dernière mise à jour par : SphinxKnight,