Esercitazione JS

JS CASA JS Introduzione JS Dove si va Uscita JS Dichiarazioni JS Sintassi JS Commenti JS Variabili JS JS Let JS Cost Operatori JS JS aritmetica Assegnazione JS Tipi di dati JS Funzioni JS Oggetti JS Eventi JS Corde JS Metodi di stringa JS Ricerca di stringhe JS Modelli di stringhe JS Numeri JS Metodi numerici JS Matrici JS Metodi array JS Ordinamento matrice JS Iterazione dell'array JS Cost. array JS Date JS Formati data JS Metodi di acquisizione della data JS Metodi di impostazione della data JS JS matematica JS Casuale JS booleani Confronti JS Condizioni JS JS Switch Ciclo JS per JS Loop per In Ciclo JS per di JS Loop mentre JS Break Iterabili JS Insiemi JS Mappe JS Tipo JS Conversione del tipo JS JS bit a bit JS RegExp Errori JS Ambito JS JS sollevamento Modalità rigorosa JS JS questa parola chiave Funzione freccia JS Classi JS JS JSON Debug JS Guida allo stile JS Migliori Pratiche JS Errori di JS Prestazioni JS Parole riservate JS

Versioni JS

Versioni JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Storia di JS

Oggetti JS

Definizioni di oggetti Proprietà dell'oggetto Metodi dell'oggetto Visualizzazione di oggetti Accessori per oggetti Costruttori di oggetti Prototipi di oggetti Iterabili di oggetti Insiemi di oggetti Mappe degli oggetti Riferimento all'oggetto

Funzioni JS

Definizioni delle funzioni Parametri di funzione Invocazione di funzione Chiamata di funzione Funzione Applica Chiusure di funzioni

Classi JS

Introduzione alla classe Eredità di classe Classe statica

JS Async

Richiamate JS JS asincrono JS Promesse JS Async/Attendere

JS HTML DOM

DOM Introduzione Metodi DOM Documento DOM Elementi DOM DOM HTML Moduli DOM DOM CSS Animazioni DOM Eventi DOM Ascoltatore di eventi DOM Navigazione DOM Nodi DOM Collezioni DOM Elenchi di nodi DOM

Distinta base del browser JS

Finestra JS Schermo JS Posizione JS Storia di JS Navigatore JS Avviso popup JS JS tempismo Biscotti JS

API Web JS

Introduzione all'API Web API dei moduli Web API Cronologia web API di archiviazione Web API Web Worker API di recupero Web API di geolocalizzazione web

JS AJAX

Introduzione all'Ajax AJAX XMLHttp Richiesta AJAX Risposta dell'AJAX File XML AJAX AJAX PHP AJAX ASP Database AJAX Applicazioni AJAX Esempi AJAX

JS JSON

Introduzione JSON Sintassi JSON JSON contro XML Tipi di dati JSON Analisi JSON JSON Stringify Oggetti JSON Matrici JSON Server JSON JSON PHP JSON HTML JSON JSONP

JS vs jQuery

Selettori jQuery jQuery HTML jQuery CSS jQuery DOM

Grafica JS

Grafica JS Tela JS JS Plotly JS Chart.js Grafico di Google JS JS D3.js

Esempi JS

Esempi JS JS HTML DOM Input HTML JS Oggetti HTML JS Eventi HTML JS Browser JS Editore JS Esercizi JS Quiz J.S Certificato JS

Riferimenti JS

Oggetti JavaScript Oggetti HTML DOM


JavaScript operazioni bit a bit


JavaScript operatori bit a bit

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

Esempi

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 utilizza operandi bit a bit a 32 bit

JavaScript memorizza i numeri come numeri in virgola mobile a 64 bit, ma tutte le operazioni bit per bit vengono eseguite su numeri binari a 32 bit.

Prima che venga eseguita un'operazione bit per bit, JavaScript converte i numeri in interi con segno a 32 bit.

Dopo aver eseguito l'operazione bit per bit, il risultato viene riconvertito in numeri JavaScript a 64 bit.

Gli esempi precedenti utilizzano numeri binari senza segno a 4 bit. Per questo motivo ~ 5 restituisce 10.

Poiché JavaScript utilizza numeri interi con segno a 32 bit, non restituirà 10. Restituirà -6.

000000000000000000000000000000101 (5)

111111111111111111111111111111111111010 (~5 = -6)

Un intero con segno utilizza il bit più a sinistra come segno meno.



bit a bit E

Quando un AND bit per bit viene eseguito su una coppia di bit, restituisce 1 se entrambi i bit sono 1.

Un piccolo esempio:
OperazioneRisultato
0 e 00
0 e 10
1 e 00
1 e 11
Esempio a 4 bit:
OperazioneRisultato
1111 e 00000000
1111 e 00010001
1111 e 00100010
1111 e 01000100

OR bit a bit

Quando viene eseguito un OR bit per bit su una coppia di bit, restituisce 1 se uno dei bit è 1:

Un piccolo esempio:
OperazioneRisultato
0 | 00
0 | 1
1 | 01
1 | 11
Esempio a 4 bit:
OperazioneRisultato
1111 | 00001111
1111 | 00011111
1111 | 00101111
1111 | 01001111

XOR bit a bit

Quando viene eseguito un XOR bit per bit su una coppia di bit, restituisce 1 se i bit sono diversi:

Un piccolo esempio:
OperazioneRisultato
0 ^ 00
0 ^ 1
1^ 01
1^1
Esempio a 4 bit:
OperazioneRisultato
1111 ^ 00001111
1111^ 00011110
1111^ 00101101
1111^ 01001011

JavaScript bit a bit AND (&)

Bit per bit AND restituisce 1 solo se entrambi i bit sono 1:

DecimaleBinario
5000000000000000000000000000000101
1000000000000000000000000000000001
5 e 1000000000000000000000000000000001 (1)

Esempio

let x = 5 & 1;

JavaScript bit a bit O (|)

Bitwise OR restituisce 1 se uno dei bit è 1:

DecimaleBinario
5000000000000000000000000000000101
1000000000000000000000000000000001
5 | 1000000000000000000000000000000101 (5)

Esempio

let x = 5 | 1;

JavaScript bit per bit XOR (^)

Bitwise XOR restituisce 1 se i bit sono diversi:

DecimaleBinario
5000000000000000000000000000000101
1000000000000000000000000000000001
5^1000000000000000000000000000000100 (4)

Esempio

let x = 5 ^ 1;

JavaScript bit a bit NON (~)

DecimaleBinario
5000000000000000000000000000000101
~5111111111111111111111111111111111111010 (-6)

Esempio

let x = ~5;

JavaScript (riempimento zero) Maiusc sinistro bit per bit (<<)

Questo è uno spostamento a sinistra di riempimento zero. Uno o più bit zero vengono inseriti da destra e i bit più a sinistra cadono:

DecimaleBinario
5000000000000000000000000000000101
5 << 1000000000000000000000000000001010 (10)

Esempio

let x = 5 << 1;

JavaScript (mantenimento del segno) Maiusc a destra bit per bit (>>)

Questo è un segno che preserva il cambio a destra. Le copie del bit più a sinistra vengono inserite da sinistra e i bit più a destra cadono:

DecimaleBinario
-511111111111111111111111111111111111011
-5 >> 1111111111111111111111111111111111111101 (-3)

Esempio

let x = -5 >> 1;

JavaScript (riempimento zero) Maiusc a destra (>>>)

Questo è uno spostamento a destra di riempimento zero. Uno o più bit zero vengono inseriti da sinistra e i bit più a destra cadono:

DecimaleBinario
5000000000000000000000000000000101
5 >>> 1000000000000000000000000000000010 (2)

Esempio

let x = 5 >>> 1;

Numeri binari

I numeri binari con un solo bit impostato sono facili da capire:

Rappresentazione binariaValore decimale
0000000000000000000000000000000011
0000000000000000000000000000000102
0000000000000000000000000000001004
000000000000000000000000000010008
00000000000000000000000000001000016
00000000000000000000000000010000032
0000000000000000000000000100000064

L'impostazione di alcuni bit in più rivela il modello binario:

Rappresentazione binariaValore decimale
0000000000000000000000000000001015 (4 + 1)
00000000000000000000000000000110113 (8 + 4 + 1)
00000000000000000000000000010110145 (32 + 8 + 4 + 1)

I numeri binari JavaScript sono memorizzati nel formato in complemento a due.

Ciò significa che un numero negativo è il NOT bit per bit del numero più 1:

Rappresentazione binariaValore decimale
0000000000000000000000000000001015
11111111111111111111111111111111111011-5
000000000000000000000000000001106
11111111111111111111111111111111111010-6
00000000000000000000000000010100040
11111111111111111111111111111111011000-40

Conversione da decimale a binario

Esempio

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

Conversione da binario a decimale

Esempio

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