Danilo Valente
Danilo Valente

Reputation: 11342

Javascript & and | symbols

I know that && and || are used in comparisons as AND and OR, respectively.

But what about the & and | operators? What are they used for?

Here's the code I'm testing:

var a = 2;
var b = 3;
var c = a & b;//2
var d = a | b;//3

Difference between && , || and &, | ....

Upvotes: 2

Views: 222

Answers (5)

Parth Thakkar
Parth Thakkar

Reputation: 5475

They are bitwise AND and OR respectively. The usage is mainly for low-level (now don't why you would want that here, there may be many applications) operations.

For example:

Decimal Number    Binary Form
    20               10100
    30               11110

  20       ==>   10100
& 30       ==>   11110
-----           ----------
  20             10100  (when both bits are 1)

  20       ==>   10100
| 30       ==>   11110
-----           ----------
  30             11110  (when either of the bits is 1)

Similarly there are other operators too:

operator    meaning             example
xor (^)   only one bit is 1     1101
                               ^1001
                               ------
                                0100

I could provide the whole list but that would be of no use. Already many answers contain links to excellent resources. You might want to look at those. My answer just gives some idea.

Upvotes: 3

Pranay Rana
Pranay Rana

Reputation: 176896

The && and || are logical operators, while & and | are bitwise operators

Bitwise Operators - Bitwise operators treat their operands as a sequence of 32 bits (zeros and ones), rather than as decimal, hexadecimal, or octal numbers. For example, the decimal number nine has a binary representation of 1001. Bitwise operators perform their operations on such binary representations, but they return standard JavaScript numerical values.

assume the variable 'a' to be 13 (binary 1101) and 'b' to be 9 (binary 1001)

Bitwise AND Operator (&) (JavaScript) - This is the bitwise AND operator which returns a 1 for each bit position where the corresponding bits of both its operands are 1. The following code would return 9 (1001):

Code:

result = a & b; 

Bitwise OR Operator (|) (JavaScript) - This is the bitwise OR operator and returns a one for each bit position where one or both of the corresponding bits of its operands is a one. This example would return 13 (1101):

Code:

result = a | b; 

Read more

OPERATORS: & | ^ ~ << >> >>>

Upvotes: 1

user278064
user278064

Reputation: 10170

JavaScript has the same set of bitwise operators as Java:

& and
| or
^ xor
~ not
>> signed right shift
>>> unsigned right shift
<< left shift

In Java, the bitwise operators work with integers. JavaScript doesn't have integers. It only has double precision floating-point numbers. So, the bitwise operators convert their number operands into integers, do their business, and then convert them back.

e.g.:

a = 2 //0010
b = 3 //0011
a & b; //0010 & 0011 === 0010 === 2
a | b; //0010 | 0011 === 0011 === 3

In most languages, these operators are very close to the hardware and very fast. In JavaScript, they are very far from the hardware and very slow. JavaScript is rarely used for doing bit manipulation. As a result, in JavaScript programs, it is more likely that & is a mistyped && operator. The presence of the bitwise operators reduces some of the language's redundancy, making it easier for bugs to hide

Javascript: The Good Parts by Douglas Crockford + Esailija answer

Upvotes: 3

Brad
Brad

Reputation: 15879

The && and || are logical operators, while & and | are bitwise operators

Upvotes: 2

Esailija
Esailija

Reputation: 140210

They are bitwise operators that operate on the bits of the number. You have to think the bits of the numbers in order for the result to make sense:

a = 2 //0010
b = 3 //0011
a & b; //0010 & 0011 === 0010 === 2

https://developer.mozilla.org/en/JavaScript/Reference/Operators/Bitwise_Operators

They are mainly used for reading and manipulating binary data, such as .mp3 files.

Upvotes: 4

Related Questions