↑
Main Page
Bitwise operators
The unary minus converted the string
“25”
into the number
–25
in the previous code (unary minus
also acts the same way as unary plus regarding hexadecimal and decimal values, but it also negates
the value).
Bitwise operators
The following set of operators work on numbers at their very base level, with the 32 bits that represent
them. Before examining these operators, I begin with a more detailed look into integers in ECMAScript.
Integers revisited
ECMAScript integers come in two specific flavors: signed (allowing both positive and negative values)
and unsigned (allowing only positive numbers). In ECMAScript, all integer literals are signed by
default. But what exactly does this mean?
Signed integers use the first 31 bits to represent the numeric value of the integer, whereas the 32nd bit
represents the sign of the number, 0 for positive or 1 for negative. The number values can range from
–2147483648 to 2147483647.
You can store signed integers in binary form in two different ways, one for positive numbers and one for
negative numbers. Positive numbers are stored in true binary format, with each of the first 31 bits repre-
senting a power of 2, starting with the first bit (called bit 0), which represents 2
0
; the second bit (bit 1)
represents 2
1
, and so on. If any bits are unused, they are filled with 0s and essentially ignored. For exam-
ple, the number 18 is represented as shown in Figure 2-4.
Figure 2-4
The binary version of 18 uses only the first five bits, which are the significant bits for this number. When
converting a number into a binary string (as discussed earlier), you see only the significant bits:
var iNum = 18;
alert(iNum.toString(2)); //outputs “10010”
This code outputs only
“10010”
instead of the whole 32-bit representation. The other bits really aren’t
important because using just these five bits makes possible to determine the decimal value (Figure 2-5).
00000000000000000000000000010010
The number 18
Bit 31
Bit 0
Filler
37
ECMAScript Basics
05_579088 ch02.qxd 3/28/05 11:35 AM Page 37
Free JavaScript Editor
Ajax Editor
©
→