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

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support de base 38 31 (31) Pas de support 25 Pas de support
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support de base Pas de support Pas de support 31.0 (31) Pas de support Pas de support Pas de support

Voir aussi

Étiquettes et contributeurs liés au document

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