I've recently had an interesting mail exchange with one of the web thought reader about the

**ASP AND operator**. I have used the AND operator in a previous post about alternating colours rows in a table and now I realise I haven't really explained how the AND operator works, and why it is useful in that situation and others.

If you try to output results, like our friend did, using a snippet like:

```
``````
<%
```

Dim i

i=1

while i<=15

Response.Write("("& i &"," &(i and 2)
&"),")

i=i+1

wend

%>

You get strange results. The series is:```
``````
(1,0),(2,2),(3,2),(4,0),(5,0),(6,2),(7,2),(8,0),(9,0),(10,2),(11,2),(12,0),(13,0),(14,2),(15,2),
```

That obviously raise a question: why we get that result?And further more: how, in the end, is the AND operator working?

**Other results**

That won't help us much in getting an alternating result as we needed for the alternating colours for rows. Eventually we might start wondering if the AND operator, the way we are using it, is really giving a true/false result... and it is not, as you can see.

So what is really doing? What is the actual AND operator output?

**The AND operator**

```
``````
"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." (quote from MSDN)
```

That means:x = 3 and 5

```
``````
"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." (same source as above)

That is why it works perfectly for our alternating colour rows: it gives us an alternating value of 0 and 1, like a true/false result.I hope that the above sheds some light about the use of the AND operator. A big thank you goes to Angel for pointing it out.

## 0 thoughts:

## Post a Comment

Comments are moderated. I apologize if I don't publish comments immediately.

However, I do answer to all the comments.