9.6. Bit String Functions and Operators
  This section describes functions and operators for examining and
    manipulating bit strings, that is values of the types
  
   bit
  
  and
  
   bit varying
  
  .  Aside from the
    usual comparison operators, the operators
    shown in
  
   Table 9.13
  
  can be used.
    Bit string operands of
  
   &
  
  ,
  
   |
  
  ,
    and
  
   #
  
  must be of equal length.  When bit
    shifting, the original length of the string is preserved, as shown
    in the examples.
 
Table 9.13. Bit String Operators
| Operator | Description | Example | Result | 
|---|---|---|---|
       
        ||
       
       | 
      concatenation | 
       
        B'10001' || B'011'
       
       | 
      
       
        10001011
       
       | 
     
       
        &
       
       | 
      bitwise AND | 
       
        B'10001' & B'01101'
       
       | 
      
       
        00001
       
       | 
     
       
        |
       
       | 
      bitwise OR | 
       
        B'10001' | B'01101'
       
       | 
      
       
        11101
       
       | 
     
       
        #
       
       | 
      bitwise XOR | 
       
        B'10001' # B'01101'
       
       | 
      
       
        11100
       
       | 
     
       
        ~
       
       | 
      bitwise NOT | 
       
        ~ B'10001'
       
       | 
      
       
        01110
       
       | 
     
       
        <<
       
       | 
      bitwise shift left | 
       
        B'10001' << 3
       
       | 
      
       
        01000
       
       | 
     
       
        >>
       
       | 
      bitwise shift right | 
       
        B'10001' >> 2
       
       | 
      
       
        00100
       
       | 
     
  The following
  
   SQL
  
  -standard functions work on bit
    strings as well as character strings:
  
   
  ,
  
    length
   
  
   
  ,
  
    bit_length
   
  
   
  ,
  
    octet_length
   
  
   
  ,
  
    position
   
  
   
  ,
  
    substring
   
  
   
  .
 
    overlay
   
  
  The following functions work on bit strings as well as binary
    strings:
  
   
  ,
  
    get_bit
   
  
   
  .
    When working with a bit string, these functions number the first
    (leftmost) bit of the string as bit 0.
 
    set_bit
   
  
  In addition, it is possible to cast integral values to and from type
  
   bit
  
  .
    Some examples:
 
44::bit(10) 0000101100 44::bit(3) 100 cast(-44 as bit(12)) 111111010100 '1110'::bit(4)::integer 14
  Note that casting to just
  
   "
   
    bit
   
   "
  
  means casting to
  
   bit(1)
  
  , and so will deliver only the least significant
    bit of the integer.
 
Note
   Casting an integer to
   
    bit(n)
   
   copies the rightmost
   
    n
   
   bits.  Casting an integer to a bit string width wider
      than the integer itself will sign-extend on the left.