按位移运算符
一、右移表达式的位,保持符号不变。
expression1 >> expression2
expression1
任何数值表达式。
expression2
任何数值表达式。
>> 运算符将 expression1 的所有位右移expression2 指定的位数。用expression1 的符号位填充右移后左边空出来的位。右移的位被丢弃。expression1 的数据类型决定此运算符所返回的数据类型。·
>> 运算符屏蔽 expression2 以免expression1 的移位量太大。否则,如果移位量超出 expression1 的数据类型中的位数,则可能移走所有的初始位,从而会提供无意义的结果。为了确保每次移位保留至少一个初始位,移位运算符将使用以下公式来计算实际移位量:使用 expression1 中的位数减一所得的结果来屏蔽 expression2(使用按位“与”运算符)。
计算完下列代码后,temp 的值为 -4:因为 -14(即二进制的11110010)右移两位后等于 -4(即二进制的11111100)。
var temp
temp = -14 >> 2
二、左移表达式的位
expression1 << expression2
expression1
任何数值表达式。
expression2
任何数值表达式。
<< 运算符将expression1 的所有位左移expression2 指定的位数。expression1的数据类型决定此运算符所返回的数据类型。
<< 运算符屏蔽expression2 以免expression1 的移位量太大。否则,如果移位量超出expression1 的数据类型中的位数,则可能移走所有的初始位,从而会提供无意义的结果。为了确保每次移位保留至少一个初始位,移位运算符将使用以下公式来计算实际移位量:使用expression1 中的位数减一所得的结果来屏蔽expression2(使用按位“与”运算符)。
var temp
temp = 14 << 2
变量 temp的值为 56,因为 14(即二进制的00001110)左移两位等于 56(即二进制的 00111000)。
三、按位“与”运算符(&)
对两个表达式执行按位“与”运算。
expression1& expression2
expression1
任何数值表达式。
expression2
任何数值表达式。
& 运算符将参数强制为匹配的数据类型。&运算符查看两个表达式的二进制表示形式的值,并对它们执行按位“与”运算。参数的数据类型决定此运算符所返回的数据类型。
示例:
0101 (expression1)
1100 (expression2)
----
0100 (result)
任何时候,只要两个表达式的某位都为 1,则结果中的该位为 1。否则,结果中的该位为 0。
四、取模运算符 (%)
一个表达式的值除以另一个表达式的值,并返回余数。
number1 % number2
number1
任何数值表达式。
number2
任何数值表达式。
取模或余数运算符用number2 除 number1 并只返回余数。结果中的符号与 number1 的符号相同。结果值在 0 和 number2 的绝对值之间。
取模运算符的参数可以为浮点数字,因此 5.6% 0.5 返回 0.1。