Výukový program JS

JS HOME Úvod do JS JS Kam vést Výstup JS JS prohlášení Syntaxe JS Komentáře JS JS proměnné JS Let JS Const Operátoři JS JS aritmetika Zadání JS JS datové typy Funkce JS JS objekty Události JS JS struny JS String Methods JS String Search Šablony řetězců JS JS čísla Metody čísel JS JS Arrays Metody JS Array JS Array Sort Iterace pole JS JS Array Const JS Termíny Formáty data JS JS metody získávání data JS metody nastavení data JS Math JS Náhodný JS Booleans JS Srovnání Podmínky JS Přepínač JS JS Loop For JS Loop For In JS Loop For Of Zatímco JS Loop JS Break JS Iterables Sady JS Mapy JS Typ JS Konverze typu JS JS Bitwise JS RegExp Chyby JS Rozsah JS JS Zvedací zařízení Přísný režim JS JS toto klíčové slovo Funkce šipky JS JS třídy JS JSON Ladění JS Průvodce stylem JS JS Best Practices Chyby JS Výkon JS JS Reserved Words

Verze JS

Verze JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Historie JS

JS objekty

Definice objektů Vlastnosti objektu Objektové metody Zobrazení objektu Objektové přístupové objekty Konstruktory objektů Prototypy objektů Iterovatelné objekty Sady objektů Mapy objektů Reference objektu

Funkce JS

Definice funkcí Funkční parametry Vyvolání funkce Volání funkce Funkce Použít Funkční uzávěry

JS třídy

Úvod do třídy Třídní dědičnost Třída Statická

JS Async

JS zpětná volání JS asynchronní JS Sliby JS Async/Await

JS HTML DOM

Úvod do DOM Metody DOM Dokument DOM Prvky DOM DOM HTML Formuláře DOM DOM CSS DOM animace Události DOM DOM Event Listener Navigace DOM DOM uzly Kolekce DOM Seznamy uzlů DOM

Kusovník prohlížeče JS

Okno JS Obrazovka JS Umístění JS Historie JS JS Navigator Popup Alert JS Časování JS Soubory cookie JS

Webová rozhraní API JS

Úvod do webového rozhraní API Web Forms API Webová historie API Web Storage API Web Worker API Web Fetch API Web Geolocation API

JS AJAX

Úvod do AJAXu AJAX XMLHttp Požadavek AJAX Odpověď AJAX Soubor XML AJAX AJAX PHP AJAX ASP Databáze AJAX Aplikace AJAX Příklady AJAX

JS JSON

Úvod do JSON Syntaxe JSON JSON vs XML Datové typy JSON Analýza JSON JSON Stringify Objekty JSON Pole JSON Server JSON JSON PHP JSON HTML JSON JSONP

JS vs jQuery

Selektory jQuery HTML jQuery jQuery CSS jQuery DOM

Grafika JS

Grafika JS JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

Příklady JS

Příklady JS JS HTML DOM Vstup HTML JS JS HTML objekty JS HTML události Prohlížeč JS Editor JS Cvičení JS JS kvíz Certifikát JS

JS Reference

Objekty JavaScriptu HTML DOM objekty


Bitové operace JavaScriptu


Bitové operátory JavaScriptu

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

Příklady

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 používá 32bitové bitové operandy

JavaScript ukládá čísla jako 64bitová čísla s plovoucí desetinnou čárkou, ale všechny bitové operace se provádějí na 32bitových binárních číslech.

Před provedením bitové operace JavaScript převede čísla na 32bitová celá čísla se znaménkem.

Po provedení bitové operace se výsledek převede zpět na 64bitová čísla JavaScriptu.

Výše uvedené příklady používají 4bitová binární čísla bez znaménka. Z tohoto důvodu ~ 5 vrátí 10.

Protože JavaScript používá 32bitová celá čísla se znaménkem, nevrátí 10. Vrátí -6.

0000000000000000000000000000101 (5)

1111111111111111111111111111010 (~5 = -6)

Celé číslo se znaménkem používá bit zcela vlevo jako znaménko mínus.



Bitové AND

Když je bitový AND proveden na páru bitů, vrátí 1, pokud jsou oba bity 1.

Jeden malý příklad:
ÚkonVýsledek
0 a 00
0 a 10
1 a 00
1 a 11
Příklad 4 bitů:
ÚkonVýsledek
1111 a 00000000
1111 a 00010001
1111 a 00100010
1111 a 01000100

Bitově NEBO

Když je bitový OR proveden na páru bitů, vrátí 1, pokud je jeden z bitů 1:

Jeden malý příklad:
ÚkonVýsledek
0 | 00
0 | 1
1 | 01
1 | 11
Příklad 4 bitů:
ÚkonVýsledek
1111 | 00001111
1111 | 00011111
1111 | 00101111
1111 | 01001111

Bitový XOR

Když se bitový XOR provede na páru bitů, vrátí 1, pokud se bity liší:

Jeden malý příklad:
ÚkonVýsledek
0 ^ 00
0 ^ 1
1 ^ 01
1 ^ 1
Příklad 4 bitů:
ÚkonVýsledek
1111 ^ 00001111
1111 ^ 00011110
1111 ^ 00101101
1111 ^ 01001011

JavaScript bitově AND (&)

Bitový AND vrátí 1, pouze pokud jsou oba bity 1:

DesetinnýBinární
50000000000000000000000000000101
100000000000000000000000000000001
5 a 10000000000000000000000000000001 (1)

Příklad

let x = 5 & 1;

JavaScript Bitově NEBO (|)

Bitový OR vrátí 1, pokud je jeden z bitů 1:

DesetinnýBinární
50000000000000000000000000000101
100000000000000000000000000000001
5 | 10000000000000000000000000000101 (5)

Příklad

let x = 5 | 1;

JavaScript Bitwise XOR (^)

Bitový XOR vrátí 1, pokud se bity liší:

DesetinnýBinární
50000000000000000000000000000101
100000000000000000000000000000001
5 ^ 10000000000000000000000000000100 (4)

Příklad

let x = 5 ^ 1;

JavaScript bitově NE (~)

DesetinnýBinární
50000000000000000000000000000101
~51111111111111111111111111111010 (-6)

Příklad

let x = ~5;

JavaScript (nulová výplň) Bitový levý Shift (<<)

Toto je posun doleva s nulovou výplní. Jeden nebo více nulových bitů je zasunuto zprava a bity zcela vlevo odpadnou:

DesetinnýBinární
50000000000000000000000000000101
5 << 10000000000000000000000000001010 (10)

Příklad

let x = 5 << 1;

JavaScript (Zachování znaménka) Bitový pravý Shift (>>)

Toto je znak zachovávání pravého posunu. Kopie bitu nejvíce vlevo se zasouvají zleva a bity nejvíce vpravo odpadnou:

DesetinnýBinární
-51111111111111111111111111111011
-5 >> 11111111111111111111111111111101 (-3)

Příklad

let x = -5 >> 1;

JavaScript (nulová výplň) pravý Shift (>>>)

Toto je posun doprava s nulovou výplní. Jeden nebo více nulových bitů je vsunuto zleva a bity zcela vpravo odpadnou:

DesetinnýBinární
50000000000000000000000000000101
5 >>> 10000000000000000000000000000010 (2)

Příklad

let x = 5 >>> 1;

Binární čísla

Binární čísla s pouze jednou bitovou sadou jsou snadno pochopitelná:

Binární reprezentaceDesetinná hodnota
000000000000000000000000000000011
00000000000000000000000000000102
00000000000000000000000000001004
00000000000000000000000000010008
000000000000000000000000001000016
000000000000000000000000010000032
000000000000000000000000100000064

Nastavení několika dalších bitů odhalí binární vzor:

Binární reprezentaceDesetinná hodnota
00000000000000000000000000001015 (4 + 1)
000000000000000000000000000110113 (8 + 4 + 1)
000000000000000000000000010110145 (32 + 8 + 4 + 1)

Binární čísla JavaScriptu jsou uložena ve formátu dvojkového doplňku.

To znamená, že záporné číslo je bitové NOT čísla plus 1:

Binární reprezentaceDesetinná hodnota
00000000000000000000000000001015
1111111111111111111111111111011-5
00000000000000000000000000001106
1111111111111111111111111111010-6
000000000000000000000000010100040
1111111111111111111111111011000-40

Převod desítkové soustavy na binární

Příklad

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

Převod binárních na desítkové

Příklad

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