深入解析ASP核心技术
上QQ阅读APP看书,第一时间看更新

2.1.4 VBScript中的位运算

VBScript支持位运算,即以二进制形式计算两个整数的值。位运算符会比较相对应的位,然后根据运算规则得到结果。

可用的位运算符如表2-3所示。

表2-3 VBScript中的位运算符

表2-3中的举例只是一种示范,在实际应用中,数字通常是Integer或Long型,或用以&H开头的十六进制形式来表示。

下面看一个简单的范例。

bitwiseOperators.asp

<%
'数字106,二进制形式为00000000 01101010,十六进制形式为00 6A
'数字153,二进制形式为00000000 10011001,十六进制形式为00 99
response.write (NOT 106) & "<br>"
response.write (106 AND 153) & "<br>"
response.write (106 OR 153) & "<br>"
response.write (&H006A XOR &H0099) & "<br>"
response.write (&H006A EQV &H0099) & "<br>"
response.write (&H006A IMP &H0099) & "<br>"
%>

运行结果如图2-1所示。

图2-1 位操作运行结果

结果中出现了负数,是因为最高位是1,而该位是符号位,1表示负数。

在进行位运算时,应该考虑数据类型、数据字节长度和符号位等问题,参与运算的数值尽量使用十六进制形式表示,把位数写全,这样可以对运算过程看得更清楚一些,避免一些小问题。如对于NOT 106,如果忽略了106的高字节,那么会想当然地以为结果是二进制的10010101,也就是十进制的149,可实际结果是-107,这是天壤之别啊。