- 深入解析ASP核心技术
- 王洪影
- 362字
- 2023-01-30 16:28:59
2.1.4 VBScript中的位运算
VBScript支持位运算,即以二进制形式计算两个整数的值。位运算符会比较相对应的位,然后根据运算规则得到结果。
可用的位运算符如表2-3所示。
表2-3 VBScript中的位运算符
![](https://epubservercos.yuewen.com/54F32D/5128954204275601/epubprivate/OEBPS/Images/figure_0044_0001.jpg?sign=1739602645-revC9iIp5aX0U4ETbXL8ZnS5G8pDUXAV-0-ed8bfc90983fc6232ab77e066024e10a)
表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所示。
![](https://epubservercos.yuewen.com/54F32D/5128954204275601/epubprivate/OEBPS/Images/figure_0044_0002.jpg?sign=1739602645-dqtBAPIvwN7teO4iaqmdxXKmddD6hZsP-0-aaa950f5935f6f653f5630f94bf19d5d)
图2-1 位操作运行结果
结果中出现了负数,是因为最高位是1,而该位是符号位,1表示负数。
在进行位运算时,应该考虑数据类型、数据字节长度和符号位等问题,参与运算的数值尽量使用十六进制形式表示,把位数写全,这样可以对运算过程看得更清楚一些,避免一些小问题。如对于NOT 106,如果忽略了106的高字节,那么会想当然地以为结果是二进制的10010101,也就是十进制的149,可实际结果是-107,这是天壤之别啊。