page_title: Bitwise operation
section_title: AND
hierarchical_section_title: Bitwise operation / Bitwise operators / AND
context_page_description: In computer programming, a bitwise operation operates on one or more bit patterns or binary numerals at the level of their individual bits. It is a fast and simple action, directly supported by the processor, and is used to manipulate values for comparisons and calculations.
  On simple low-cost processors, typically, bitwise operations are substantially faster than division, several times faster than multiplication, and sometimes significantly faster than addition. While modern processors usually perform addition and multiplication just as fast as bitwise operations due to their longer instruction pipelines and other architectural design choices, bitwise operations do commonly use less power because of the reduced use of resources.
context_section_description: A bitwise AND is a binary operation that takes two equal-length binary representations and performs the logical AND operation on each pair of the corresponding bits, which is equivalent to multiplying them. Thus, if both bits in the compared position are 1, the bit in the resulting binary representation is 1 (1 × 1 = 1); otherwise, the result is 0 (1 × 0 = 0 and 0 × 0 = 0). For example:
      0101 (decimal 5)
  AND 0011 (decimal 3)
    = 0001 (decimal 1)
  The operation may be used to determine whether a particular bit is set (1) or clear (0). For example, given a bit pattern 0011 (decimal 3), to determine whether the second bit is set we use a bitwise AND with a bit pattern containing 1 only in the second bit:
      0011 (decimal 3)
  AND 0010 (decimal 2)
    = 0010 (decimal 2)
  Because the result 0010 is non-zero, we know the second bit in the original pattern was set. This is often called bit masking. (By analogy, the use of masking tape covers, or masks, portions that should not be altered or portions that are not of interest. In this case, the 0 values mask the bits that are not of interest.)
  The bitwise AND may be used to clear selected bits (or flags) of a register in which each bit represents an individual Boolean state. This technique is an efficient way to store a number of Boolean values using as little memory as possible.
  For example, 0110 (decimal 6) can be considered a set of four flags, where the first and fourth flags are clear (0), and the second and third flags are set (1). The third flag may be cleared by using a bitwise AND with the pattern that has a zero only in the third bit:
      0110 (decimal 6)
  AND 1011 (decimal 11)
    = 0010 (decimal 2)
  Because of this property, it becomes easy to check the parity of a binary number by checking the value of the lowest valued bit. Using the example above:
      0110 (decimal 6)
  AND 0001 (decimal 1)
    = 0000 (decimal 0)
  Because 6 AND 1 is zero, 6 is divisible by two and therefore even.
caption: Bitwise AND of 4-bit integers