Creating a Binary Matrix with C++ Code

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
1 reply · 7K views
jetoso
Messages
73
Reaction score
0
I want to build a binary matrix (with 1 and 0 entries) with all possible combinations, say for example if n is the number of entries of one row of the matrix, then 2^n is the total number of different entries in the matrix.

For instance, for n=3, 2^n = 8, so we would have the following matrix
[ 1 0 0
0 1 0
0 0 1
1 1 0
1 0 1
0 1 1
1 1 1
0 0 0 ]

I am writing a C++ code but I have not figured out how to make it. Any suggestions?
 
Last edited by a moderator:
Physics news on Phys.org
Do you plan to go beyond n = 32? If so, I don't think the project is practical. If not, then you can simply loop through the integers from 0 to (2^n - 1) and print out their bits. I haven't tried this code, but it might work. If the order of the lines matters, then you can manipulate things as needed.

Code:
// print the bit patterns for the first 2^n integers
for (int wRow = 0; wRow < (2^n); ++wRow)
{
  // make a copy of the row number
  int wBitMap = wRow;

  // for each bit
  for (int wBit = 0; wBit < n; ++wBit)
  {
    // display the leftmost bit along with a space character
    cout << wBitMap & 1 << " ";
    // and shift a new bit into place
    wBitMap /= 2;
  }
  cout << endl;
}