Open In App

bit_and function in C++

Last Updated : 10 May, 2019
Improve
Improve
Like Article
Like
Save
Share
Report

bit_and is a builtin function in C++ which is used to return the values after applying the bitwise_and on its arguments(as returned by operator &).

template  struct bit_and 
{
  T operator() (const T& a, const T& b) const {return a&b;}
  typedef T type of first_argument;
  typedef T type of second_argument;
  typedef T result_type;
};

T is the type of all the arguments.

Note:

  1. Objects of this class can be used on standard algorithms such as transform or accumulate.
  2. Member functions ( ‘operator()’ ) returns the bitwise_and of its arguments.

We must include the library ‘functional’ and ‘algorithm’ to use bit_and and transform respectively otherwise they will not work.

Below are the programs to show the working of bit_and function:
Program-1:




// C++ program to show the 
// functionality of bit_and
#include <algorithm> // transform
#include <functional> // bit_and
#include <iostream> // cout
#include <iterator> // end
using namespace std;
  
int main()
{
    // declaring the values
    int xyz[] = { 500, 600, 300, 800, 200 };
    int abc[] = { 0xf, 0xf, 0xf, 255, 255 };
    int n = 5;
    // defining results
    int results[n];
  
    // transform is used to apply
    // bitwise_and on the arguments
    transform(xyz, end(xyz), abc,
              results, bit_and<int>());
  
    // printing the resulting array
    cout << "Results:";
    for (const int& x : results)
        cout << ' ' << x;
  
    return 0;
}


Output:

Results: 4 8 12 32 200

Program-2:




// C++ program to show the 
// functionality of bit_and
#include <algorithm> // transform
#include <functional> // bit_and
#include <iostream> // cout
#include <iterator> // end
using namespace std;
  
int main()
{
    // declaring the values
    int xyz[] = { 0, 1100 };
    int abc[] = { 0xf, 0xf };
  
    // defining results
    int results[2];
    // transform is used to apply
    // bitwise_and on the arguments
    transform(xyz, end(xyz), abc,
              results, bit_and<int>());
  
    // printing the resulting array
    cout << "Results:";
    for (const int& x : results)
        cout << ' ' << x;
  
    return 0;
}


Output:

Results: 0 12


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads