Program to find 1's complement of a binary number in C++

Problem –  Binary Number as a string, we have to print its 1’s complement.

1’s complement of a binary number is another binary number obtained by transforming all the 0 bit to 1 and the 1 bit to 0.

Example:

Input: 101010                   

One’s complement the number: 010101

Algorithm:

  1. Take binary number input as a string, having a length of size.
  2. Initialize int fail=0.
  3. Start a loop from i = 0 to i<size.
  4. Inside the loop, check if the character at the current index i is '0' or '1'. If it is '0', assign '1' to the corresponding index in the complement string. If it is '1', assign '0' to the corresponding index in the complement string.
  5. If the character at the current index i is not '0' or '1', print an error message and set fail = 1.
  6. If fail is still 0 after the loop, print the ones complement.

Code:

#include <iostream>
#define size 6
using namespace std;

int main() {
  int i, fail = 0;
  char binary[size + 1], comp[size + 1];
  cout << "Input a " << size << " bit binary number: ";
  cin >> binary;
  for (i = 0; i < size; i++) {
    if (binary[i] == '1') {
      comp[i] = '0';
    }
    else if (binary[i] == '0') {
      comp[i] = '1';
    }
    else {
      cout << "Error! Input the number of assigned bits." << endl;
      fail = 1;
      break;
    }
  }
  comp[size] = '\0';
  if (fail == 0) {
    cout << "The original binary number = " << binary << endl;
    cout << "Ones complement the number = " << comp << endl;
  }
}

Output

Input a 6 bit binary number: 101101
The original binary number = 101101
Ones complement the number = 010010

Input a 6 bit binary number: 10101
Error! Input the number of assigned bits.

Program to find 1's complement of a binary number in C++