ECMAScript Bitwise Operators
ECMAScript Bitwise Operators
Writing ECMAScript Module
Foreword: In this tutorial I talk about the bitwise NOT operator, bitwise AND operator, bitwise OR operator and bitwise Exclusixe OR operator; I also talk about bitwise shift operators.
By: Chrysanthus Date Published: 24 Jul 2016
Introduction
Bitwise Logical Operators
Bitwise NOT Operator
The bitwise NOT operator is ~. The bitwise NOT of the byte,
01001101
is
10110010
Remember, 1 means true and 0 means false. The binary number 01001101 is the decimal 77. The binary number 10110010 is the decimal 178. So, if we bitwise NOT 77, we should have 178. The following code does this with the computer:
opernd = 0b01001101;
answer = ~opernd;
console.log(answer);
0b means the text on the right is binary (base 2) and implies conversion to base 10. I tried the code and I had –78, which is the byte signed number of 178. The operation is correct.
Bitwise AND
The bitwise AND operator is &. The following is a manual bitwise AND operation:
00110110
01010100
--------
00010100
========
The following code does this with the computer:
operandL = 0b00110110;
operandR = 0b01010100;
answer = operandL & operandR;
console.log(answer);
I tried this in my computer and I had 20 in base 10. Decimal 20 is 00010100 in base 2. So the operation is correct.
The bitwise OR operator is |. The following is a manual bitwise OR operation:
10111010
00101001
--------
10111011
========
The following code does this with the computer:
operandL = 0b10111010;
operandR = 0b00101001;
answer = operandL | operandR;
console.log(answer);
I tried this in my computer and I had decimal 187. Decimal 187 is binary 10111011.
Bitwise XOR
Bitwise exclusive OR is OR where true OR true is false (the other OR actions remaining the same). The bitwise XOR operator is ^. The following is a manual bitwise XOR operation:
10111010
00101001
--------
10010011
========
The following code does this with the computer:
operandL = 0b10111010;
operandR = 0b00101001;
answer = operandL ^ operandR;
console.log(answer);
I tried this in my computer and I had decimal 147. Decimal 147 is binary 10010011.
Bitwise Shift Operators
The left shift operator is, <<. It shifts all the bits to the left, a number of places, adding corresponding number of zeroes to the right. The syntax is:
operand << n
where n is the number of places to be shifted. The left shift of,
11101011
by 2 places is
1110101100
The following code does the above 2 place shifting, in the computer:
opernd = 0b11101011;
answer = opernd << 2;
console.log(answer);
I tried the code in my computer and I had decimal 940, which is binary 1110101100.
The above number shifted, is a byte (8 bits). There would be times when you will want to discard the extra result bits on the left. To achieve this, shift the byte while it is in an Uint8Array buffer. The following code illustrates this:
arrBuf = new ArrayBuffer(1);
t8Arr = new Uint8Array(arrBuf);
t8Arr[0] = 0b11101011;
t8Arr[0] = t8Arr[0] << 2;
console.log(t8Arr[0]);
Note that the result goes back to the same buffer cell. I tried this in my computer and I had decimal 172, which is binary 10101100 with the extra result bits on the left discarded.
Right Shift Operator
The right shift operator is, >>>. It shifts all the bits to the right, a number of places, adding corresponding number of zeroes to the left. The syntax is:
operand >>> n
where n is the number of places to be shifted. The right shift of,
11101011
by 2 places is
00111010
with the extra result bits on the right discarded.
The following code does the above 2 place shifting, in the computer:
opernd = 0b11101011;
answer = opernd >>> 2;
console.log(answer);
I tried the code in my computer and I had decimal 58, which is binary 00111010.
That is it for this tutorial.
Chrys
Related Links
Internet Socket and ECMAScriptHandling Bytes in ECMAScript
ECMAScript Bitwise Operators
ECMAScript Module Essentials
More Related Links
Node Mailsend
EMySQL API
Node.js Web Development Course
Major in Website Design
Low Level Programming - Writing ECMAScript Module
ECMAScript Course