Tutoriel JavaScript

JS ACCUEIL Présentation de JS JS Où aller Sortie JS Déclarations JS Syntaxe JS Commentaires JS Variables JS JS Let Const JS Opérateurs JS Arithmétique JS Affectation JS Types de données JS Fonctions JavaScript Objets JS Événements JS Chaînes JS Méthodes de chaîne JS Recherche de chaîne JS Modèles de chaîne JS Numéros JS Méthodes de nombre JS Tableaux JS Méthodes de tableau JS Tri de tableau JS Itération de tableau JS Const tableau JS Dates JS Formats de date JS Méthodes d'obtention de date JS Méthodes de définition de date JS JS Mathématiques JS Aléatoire Booléens JS Comparaisons JS Conditions JS Commutateur JS Boucle JS pour Boucle JS pour dans Boucle JS pour de Boucle JS pendant Pause JS Itérables JS Ensembles JS Cartes JS Type de JS Conversion de type JS JS au niveau du bit JS RegExp Erreurs JS Portée JS JS Levage Mode JS strict JS ce mot clé Fonction flèche JS Cours JS JSJSON Débogage JS Guide de style JS Meilleures pratiques JS Erreurs JS Performances JS Mots réservés JS

Versions JavaScript

Versions JavaScript JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Historique JS

Objets JS

Définitions d'objet Propriétés de l'objet Méthodes d'objet Affichage d'objet Accesseurs d'objet Constructeurs d'objets Prototypes d'objets Itérables d'objet Ensembles d'objets Cartes d'objets Référence d'objet

Fonctions JavaScript

Définitions des fonctions Paramètres de fonction Appel de fonction Appel de fonction Fonction Appliquer Fermetures de fonction

Cours JS

Introduction de classe Héritage de classe Classe Statique

JS asynchrone

Rappels JS JS asynchrone JS promet JS asynchrone/en attente

JS HTML DOM

Introduction DOM Méthodes DOM Documents DOM Éléments DOM HTML DOM Formulaires DOM DOM CSS Animations DOM Événements DOM Écouteur d'événements DOM Navigation DOM Nœuds DOM Collections DOM Listes de nœuds DOM

Nomenclature du navigateur JS

Fenêtre JS Écran JavaScript Emplacement JS Historique JS Navigateur JS Alerte contextuelle JS Calendrier JS Cookies JavaScript

API Web JS

Présentation de l'API Web API des formulaires Web API d'historique Web API de stockage Web API de travail Web API de récupération Web API de géolocalisation Web

JS AJAX

Introduction à AJAX AJAX XMLHttp Requête AJAX Réponse AJAX Fichier XML AJAX PHP AJAX ASP AJAX Base de données AJAX Applications AJAX Exemples AJAX

JSJSON

Présentation JSON Syntaxe JSON JSON contre XML Types de données JSON Analyse JSON Chaîne JSON Objets JSON Tableaux JSON Serveur JSON JSON PHP HTML JSON JSON JSONP

JS contre jQuery

Sélecteurs jQuery jQuery HTML jQuery CSS jQuery DOM

Graphiques JS

Graphiques JS Canevas JS JS Complot JS Chart.js Graphique Google JS JS D3.js

Exemples JS

Exemples JS JS HTML DOM Entrée HTML JS Objets HTML JS Événements HTML JS Navigateur JS Éditeur JavaScript Exercices JS Questionnaire JS Certificat JS

Références JavaScript

Objets JavaScript Objets DOM HTML


Opérations JavaScript au niveau du bit


Opérateurs bit à bit JavaScript

Operator Name Description
& AND Sets each bit to 1 if both bits are 1
| OR Sets each bit to 1 if one of two bits is 1
^ XOR Sets each bit to 1 if only one of two bits is 1
~ NOT Inverts all the bits
<< Zero fill left shift Shifts left by pushing zeros in from the right and let the leftmost bits fall off
>> Signed right shift Shifts right by pushing copies of the leftmost bit in from the left, and let the rightmost bits fall off
>>> Zero fill right shift Shifts right by pushing zeros in from the left, and let the rightmost bits fall off

Exemples

Operation Result Same as Result
5 & 1 1 0101 & 0001  0001
5 | 1 5 0101 | 0001  0101
~ 5 10  ~0101  1010
5 << 1 10 0101 << 1  1010
5 ^ 1 4 0101 ^ 0001  0100
5 >> 1 2 0101 >> 1  0010
5 >>> 1 2 0101 >>> 1  0010

JavaScript utilise des opérandes au niveau du bit 32 bits

JavaScript stocke les nombres sous forme de nombres à virgule flottante 64 bits, mais toutes les opérations au niveau du bit sont effectuées sur des nombres binaires 32 bits.

Avant qu'une opération au niveau du bit ne soit effectuée, JavaScript convertit les nombres en entiers signés 32 bits.

Une fois l'opération au niveau du bit effectuée, le résultat est reconverti en nombres JavaScript 64 bits.

Les exemples ci-dessus utilisent des nombres binaires non signés de 4 bits. Pour cette raison ~ 5 renvoie 10.

Comme JavaScript utilise des entiers signés 32 bits, il ne renverra pas 10. Il renverra -6.

0000000000000000000000000000101 (5)

11111111111111111111111111010 (~5 = -6)

Un entier signé utilise le bit le plus à gauche comme signe moins.



ET au niveau du bit

Lorsqu'un ET au niveau du bit est effectué sur une paire de bits, il renvoie 1 si les deux bits sont à 1.

Un petit exemple :
OpérationRésultat
0 & 00
0 & 10
dix0
1 & 11
Exemple 4 bits :
OpérationRésultat
1111 & 00000000
1111 & 00010001
1111 & 00100010
1111 & 01000100

OU au niveau du bit

Lorsqu'un OU au niveau du bit est effectué sur une paire de bits, il renvoie 1 si l'un des bits vaut 1 :

Un petit exemple :
OpérationRésultat
0 | 00
0 | 1
1 | 01
1 | 11
Exemple 4 bits :
OpérationRésultat
1111 | 00001111
1111 | 00011111
1111 | 00101111
1111 | 01001111

XOR au niveau du bit

Lorsqu'un XOR au niveau du bit est effectué sur une paire de bits, il renvoie 1 si les bits sont différents :

Un petit exemple :
OpérationRésultat
0 ^ 00
0 ^ 1
1 ^ 01
1 ^ 1
Exemple 4 bits :
OpérationRésultat
1111 ^ 00001111
1111 ^ 00011110
1111 ^ 00101101
1111 ^ 01001011

AND au niveau du bit JavaScript (&)

Bitwise AND renvoie 1 uniquement si les deux bits sont 1 :

DécimalBinaire
50000000000000000000000000000101
10000000000000000000000000000001
5 & ​​10000000000000000000000000000001 (1)

Exemple

let x = 5 & 1;

OR au niveau du bit JavaScript (|)

Le OU au niveau du bit renvoie 1 si l'un des bits vaut 1 :

DécimalBinaire
50000000000000000000000000000101
10000000000000000000000000000001
5 | 10000000000000000000000000000101 (5)

Exemple

let x = 5 | 1;

JavaScript Bitwise XOR (^)

Bitwise XOR renvoie 1 si les bits sont différents :

DécimalBinaire
50000000000000000000000000000101
10000000000000000000000000000001
5 ^ 10000000000000000000000000000100 (4)

Exemple

let x = 5 ^ 1;

JavaScript au niveau du bit NON (~)

DécimalBinaire
50000000000000000000000000000101
~511111111111111111111111111010 (-6)

Exemple

let x = ~5;

JavaScript (Remplissage zéro) Décalage gauche au niveau du bit (<<)

Il s'agit d'un décalage à gauche de remplissage nul. Un ou plusieurs bits zéro sont introduits à partir de la droite et les bits les plus à gauche tombent :

DécimalBinaire
50000000000000000000000000000101
5 << 10000000000000000000000000001010 (10)

Exemple

let x = 5 << 1;

JavaScript (préservation des signes) Décalage vers la droite au niveau du bit (>>)

C'est un signe préservant le décalage vers la droite. Les copies du bit le plus à gauche sont insérées à partir de la gauche et les bits les plus à droite tombent :

DécimalBinaire
-5111111111111111111111111111011
-5 >> 111111111111111111111111111101 (-3)

Exemple

let x = -5 >> 1;

JavaScript (Remplissage zéro) Décalage vers la droite (>>>)

Il s'agit d'un décalage vers la droite de remplissage nul. Un ou plusieurs bits zéro sont insérés à partir de la gauche et les bits les plus à droite tombent :

DécimalBinaire
50000000000000000000000000000101
5 >>> 10000000000000000000000000000010 (2)

Exemple

let x = 5 >>> 1;

Nombres binaires

Les nombres binaires avec un seul bit défini sont faciles à comprendre :

Représentation binaireValeur décimale
00000000000000000000000000000011
00000000000000000000000000000102
00000000000000000000000000001004
00000000000000000000000000010008
000000000000000000000000001000016
000000000000000000000000010000032
000000000000000000000000100000064

Définir quelques bits supplémentaires révèle le modèle binaire :

Représentation binaireValeur décimale
00000000000000000000000000001015 (4 + 1)
000000000000000000000000000110113 (8 + 4 + 1)
000000000000000000000000010110145 (32 + 8 + 4 + 1)

Les nombres binaires JavaScript sont stockés au format complément à deux.

Cela signifie qu'un nombre négatif est le NON au niveau du bit du nombre plus 1 :

Représentation binaireValeur décimale
00000000000000000000000000001015
111111111111111111111111111011-5
00000000000000000000000000001106
111111111111111111111111111010-6
000000000000000000000000010100040
111111111111111111111111011000-40

Conversion de décimal en binaire

Exemple

function dec2bin(dec){
  return (dec >>> 0).toString(2);
}

Conversion binaire en décimal

Exemple

function bin2dec(bin){
  return parseInt(bin, 2).toString(10);
}