Відмінності між версіями «Побітові оператори JavaScript»
м (перейменував «Побітові оператори» на «Побітові оператори JavaScript») |
|||
(не показані 8 проміжних версій ще одного учасника) | |||
Рядок 1: | Рядок 1: | ||
− | |||
Побітові оператори впливають на операнди як набір бітів ('''0''' і '''1''').<br> | Побітові оператори впливають на операнди як набір бітів ('''0''' і '''1''').<br> | ||
Побітові оператори виконують дії на таких двійкових представленнях, але вони повертають стандартне JavaScript чисельне значення. | Побітові оператори виконують дії на таких двійкових представленнях, але вони повертають стандартне JavaScript чисельне значення. | ||
Рядок 89: | Рядок 88: | ||
== '''''Побітові Логічні оператори''''' == | == '''''Побітові Логічні оператори''''' == | ||
− | Побітові логічні оператори працюють таким чином:<br/> | + | '''Побітові логічні оператори працюють таким чином:'''<br/> |
− | * Операнди перетворені в 32-бітові цілі числа, і вирази рядків бітів (0 і 1). | + | * Операнди перетворені в '''32-бітові''' цілі числа, і вирази рядків бітів ('''0''' і '''1'''). |
* Кожен біт в першому операнді з'єднаний з відповідним бітом у другому операнді: перший біт до першого біту, другий біт до другого біту, і так далі. | * Кожен біт в першому операнді з'єднаний з відповідним бітом у другому операнді: перший біт до першого біту, другий біт до другого біту, і так далі. | ||
* Оператор застосовується до кожної пари бітів, і результат створений побітовий.<br/><br/> | * Оператор застосовується до кожної пари бітів, і результат створений побітовий.<br/><br/> | ||
− | ''Побітовi оператори:''<br/> | + | '''Побітовi оператори:'''<br/> |
− | * Побітове | + | * Побітове AND "'''&'''" повертає 1, якщо обидва операнди 1.<br/> |
− | * Побітове АБО | повертає 1, якщо будь-який операнд 1.<br/> | + | * Побітове АБО "'''|'''" повертає 1, якщо будь-який операнд 1.<br/> |
− | * Виключне побітове АБО ^ повертає 1, якщо є 1 але не обидва операнди 1. | + | * Виключне побітове АБО "'''^'''" повертає 1, якщо є 1 але не обидва операнди 1.<br/> |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | Приклад: | ||
+ | '''15 & 9 = 9''' (1111 & 1001 = 1001) | ||
+ | '''15 | 9 = 15''' (1111 | 1001 = 1111) | ||
+ | '''15 ^ 9 = 6''' (1111 ^ 1001 = 0110) | ||
− | == ''''' | + | == '''''Побітові оператори зсуву''''' == |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
Побітові оператори зсуву: | Побітові оператори зсуву: | ||
Рядок 146: | Рядок 121: | ||
Зсув вліво переміщує всі біти вліво на кількість позицій, вказаних в правій частині виразу, заповнюючи позиції, що звільнилися нулями. | Зсув вліво переміщує всі біти вліво на кількість позицій, вказаних в правій частині виразу, заповнюючи позиції, що звільнилися нулями. | ||
− | + | '''9 << 2 = 36''' (1001 << 2 = 100100) | |
'''Зсув вправо (>>)''' | '''Зсув вправо (>>)''' | ||
Рядок 152: | Рядок 127: | ||
Зсув вправо заповнює звільнені ліворуч позиції значенням самого лівого біта вихідного значення. | Зсув вправо заповнює звільнені ліворуч позиції значенням самого лівого біта вихідного значення. | ||
− | + | '''9 >> 2 = 2''' (1001 >> 2 = 10) | |
'''Зсув вправо із заповненням нулями (>>>)''' | '''Зсув вправо із заповненням нулями (>>>)''' | ||
Рядок 158: | Рядок 133: | ||
Зсув вправо із заповненням нулями працює аналогічно зсуву вліво, тільки в протилежному напрямі. | Зсув вправо із заповненням нулями працює аналогічно зсуву вліво, тільки в протилежному напрямі. | ||
− | Наприклад, 19>>> 2 повертає 4, бо 10011 зсувається на два біти праворуч і стають 100, що дорівнює в десятичній системі 4. Для postive чисел, нуль - заповнює правий зсув, і що поширюється знак зміщюється вправо видає той же самий результат. | + | Наприклад, 19 >>> 2 повертає 4, бо 10011 зсувається на два біти праворуч і стають 100, що дорівнює в десятичній системі 4. Для postive чисел, нуль - заповнює правий зсув, і що поширюється знак зміщюється вправо видає той же самий результат. |
Поточна версія на 08:20, 7 квітня 2012
Побітові оператори впливають на операнди як набір бітів (0 і 1).
Побітові оператори виконують дії на таких двійкових представленнях, але вони повертають стандартне JavaScript чисельне значення.
Двійкове представлення | Десяткове представлення | Шісняцяткове представлення | Двійкове представлення | Десяткове представлення | Шісняцяткове представлення | |
---|---|---|---|---|---|---|
0000 | 0 | 0 | 1000 | 8 | 8 | |
0001 | 1 | 1 | 1009 | 9 | 9 | |
0010 | 2 | 2 | 1010 | 10 | A | |
0011 | 3 | 3 | 1011 | 11 | B | |
0100 | 4 | 4 | 1100 | 12 | C | |
0101 | 5 | 5 | 1101 | 13 | D | |
0110 | 6 | 6 | 1110 | 14 | E | |
0111 | 7 | 7 | 1111 | 15 | F |
Побітові Логічні оператори
Побітові логічні оператори працюють таким чином:
- Операнди перетворені в 32-бітові цілі числа, і вирази рядків бітів (0 і 1).
- Кожен біт в першому операнді з'єднаний з відповідним бітом у другому операнді: перший біт до першого біту, другий біт до другого біту, і так далі.
- Оператор застосовується до кожної пари бітів, і результат створений побітовий.
Побітовi оператори:
- Побітове AND "&" повертає 1, якщо обидва операнди 1.
- Побітове АБО "|" повертає 1, якщо будь-який операнд 1.
- Виключне побітове АБО "^" повертає 1, якщо є 1 але не обидва операнди 1.
Приклад:
15 & 9 = 9 (1111 & 1001 = 1001) 15 | 9 = 15 (1111 | 1001 = 1111) 15 ^ 9 = 6 (1111 ^ 1001 = 0110)
Побітові оператори зсуву
Побітові оператори зсуву:
- Зсув вліво (<<)
- Зсув вправо (>>)
- Зсув вправо із заповненням нулями (>>>)
Оператор зсуву присвоює два операнди: перший - кількість на яке буде зміщено, і другий визначає число бітових положень, якими перший операнд повинен бути змістити. Напрямок дії зсуву управляється керуючим оператором.
Оператори зсуву перетворять операнди до 32-бітового цілого числа, і повертають результат того ж самого типу що і лівий оператор.
Зсув вліво (<<)
Зсув вліво переміщує всі біти вліво на кількість позицій, вказаних в правій частині виразу, заповнюючи позиції, що звільнилися нулями.
9 << 2 = 36 (1001 << 2 = 100100)
Зсув вправо (>>)
Зсув вправо заповнює звільнені ліворуч позиції значенням самого лівого біта вихідного значення.
9 >> 2 = 2 (1001 >> 2 = 10)
Зсув вправо із заповненням нулями (>>>)
Зсув вправо із заповненням нулями працює аналогічно зсуву вліво, тільки в протилежному напрямі.
Наприклад, 19 >>> 2 повертає 4, бо 10011 зсувається на два біти праворуч і стають 100, що дорівнює в десятичній системі 4. Для postive чисел, нуль - заповнює правий зсув, і що поширюється знак зміщюється вправо видає той же самий результат.