VBscript 中的(数字和数字)

发布于 2024-12-10 08:02:12 字数 197 浏览 0 评论 0原文

我有一些经典 ASP 中的 VB 脚本,如下所示:

if (x and y) > 0 then
    'do something
end if

它的工作原理似乎如下: (46 和 1) = 0 和 (47 和 1) = 1

我不明白这是如何工作的。有人可以解释一下吗?

I have some VB script in classic ASP that looks like this:

if (x and y) > 0 then
    'do something
end if

It seems to work like this:
(46 and 1) = 0
and
(47 and 1) = 1

I don't understand how that works. Can someone explain that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

暮色兮凉城 2024-12-17 08:02:12

这是一个按位与

    47 is 101111
AND  1 is 000001
        = 000001

尽管

    46 is 101110
AND  1 is 000001
        = 000000

It's a Bitwise AND.

    47 is 101111
AND  1 is 000001
        = 000001

while

    46 is 101110
AND  1 is 000001
        = 000000
若相惜即相离 2024-12-17 08:02:12

它正在进行按位比较 -

按位运算计算两个二进制整数值(以 2 为底)
形式。他们比较相应位置的位,然后分配
基于比较的值。

还有一个例子 -

x = 3 And 5

前面的示例将 x 的值设置为 1。这种情况发生在
原因如下:

这些值被视为二进制:

二进制形式的 3 = 011

二进制形式的 5 = 101

And 运算符比较二进制表示,一个二进制
一次位置(位)。如果给定位置的两位均为 1,则
1 被放置在结果中的该位置。如果任一位为 0,则
0 被放置在结果中的该位置。在前面的例子中
其结果如下:

011(二进制形式的3)

101(二进制形式为 5)

001(结果,二进制形式)

结果被视为十进制。值 001 是二进制
1 的表示,因此 x = 1。

来自 - http ://msdn.microsoft.com/en-us/library/wz3k228a(v=vs.80).aspx

It's doing a bitwise comparison -

Bitwise operations evaluate two integral values in binary (base 2)
form. They compare the bits at corresponding positions and then assign
values based on the comparison.

and a further example -

x = 3 And 5

The preceding example sets the value of x to 1. This happens for the
following reasons:

The values are treated as binary:

3 in binary form = 011

5 in binary form = 101

The And operator compares the binary representations, one binary
position (bit) at a time. If both bits at a given position are 1, then
a 1 is placed in that position in the result. If either bit is 0, then
a 0 is placed in that position in the result. In the preceding example
this works out as follows:

011 (3 in binary form)

101 (5 in binary form)

001 (The result, in binary form)

The result is treated as decimal. The value 001 is the binary
representation of 1, so x = 1.

From - http://msdn.microsoft.com/en-us/library/wz3k228a(v=vs.80).aspx

沧笙踏歌 2024-12-17 08:02:12

尝试

x = 47
y = -1

if (x AND y) > 0 then
    'erroneously passes condition instead of failing
end if

代码应该是这样

if (x > 0) AND (y > 0) then
    'do something
end if

,然后它就会按预期工作。

Try

x = 47
y = -1

if (x AND y) > 0 then
    'erroneously passes condition instead of failing
end if

Code should be

if (x > 0) AND (y > 0) then
    'do something
end if

and then it'll work as expected.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文