Complement of a number with any base b

07 Jul, 2021
One’s Complement of an Integer
1’s and 2’s complement of a Binary Number
In this post, a general method of finding complement with any arbitrary base is discussed.Steps to find (b-1)’s complement: To find (b-1)’s complement,  
Subtract each digit of the number from the largest number in the number system with base .
For example, if the number is a three-digit number in base 9, then subtract the number from 888 as 8 is the largest number in base 9 number system.
The obtained result is the (b-1)’s (8’s complement) complement.
Steps to find b’s complement: To find b’s complement, just add 1 to the calculated (b-1)’s complement.Now, this holds true for any base in the number system that exists. It can be tested with familiar bases that is the 1’s and 2’s complement.Example:  
Let the number be 10111 base 2 (b=2)
Then, 1's complement will be 01000 (b-1)
2's complement will be 01001 (b)

Taking a number with Octal base:
Let the number be -456.
Then 7's complement will be 321
and 8's complement will be 322
 
Below is the implementation of above idea:  
C++
Java
Python 3
C#
PHP
Javascript
// CPP program to find complement of a// number with any base b#include<iostream>#include<cmath> using namespace std; // Function to find (b-1)'s complementint prevComplement(int n, int b){    int maxDigit, maxNum = 0, digits = 0, num = n;         // Calculate number of digits    // in the given number    while(n!=0)    {        digits++;        n = n/10;    }         // Largest digit in the number    // system with base b    maxDigit = b-1;         // Largest number in the number    // system with base b    while(digits--)    {        maxNum = maxNum*10 + maxDigit;    }         // return Complement    return maxNum - num;} // Function to find b's complementint complement(int n, int b){      // b's complement = (b-1)'s complement + 1    return prevComplement(n,b) + 1;} // Driver codeint main(){    cout << prevComplement(25, 7)<<endl;         cout << complement(25, 7);         return 0;}
// Java program to find complement// of a number with any base bclass GFG{ // Function to find (b-1)'s complementstatic int prevComplement(int n, int b){    int maxDigit, maxNum = 0,        digits = 0, num = n;         // Calculate number of digits    // in the given number    while(n != 0)    {        digits++;        n = n / 10;    }         // Largest digit in the number    // system with base b    maxDigit = b - 1;         // Largest number in the number    // system with base b    while((digits--) > 0)    {        maxNum = maxNum * 10 + maxDigit;    }         // return Complement    return maxNum - num;} // Function to find b's complementstatic int complement(int n, int b){    // b's complement = (b-1)'s    // complement + 1    return prevComplement(n, b) + 1;} // Driver codepublic static void main(String args[]){    System.out.println(prevComplement(25, 7));         System.out.println(complement(25, 7));}} // This code is contributed// by Kirti_Mangal
# Python 3 program to find# complement of a number# with any base b # Function to find# (b-1)'s complementdef prevComplement(n, b) :    maxNum, digits, num = 0, 0, n     # Calculate number of digits    # in the given number    while n > 1 :        digits += 1        n = n // 10     # Largest digit in the number    # system with base b    maxDigit = b - 1     # Largest number in the number    # system with base b    while digits :        maxNum = maxNum * 10 + maxDigit        digits -= 1             # return Complement    return maxNum - num # Function to find b's complementdef complement(n, b) :     # b's complement = (b-1)'s    # complement + 1    return prevComplement(n, b) + 1 # Driver codeif __name__ == "__main__" :         # Function calling    print(prevComplement(25, 7))    print(complement(25, 7)) # This code is contributed# by ANKITRAI1
// C# program to find complement// of a number with any base bclass GFG{ // Function to find (b-1)'s complementstatic int prevComplement(int n, int b){    int maxDigit, maxNum = 0,        digits = 0, num = n;         // Calculate number of digits    // in the given number    while(n != 0)    {        digits++;        n = n / 10;    }         // Largest digit in the number    // system with base b    maxDigit = b - 1;         // Largest number in the number    // system with base b    while((digits--) > 0)    {        maxNum = maxNum * 10 + maxDigit;    }         // return Complement    return maxNum - num;} // Function to find b's complementstatic int complement(int n, int b){    // b's complement = (b-1)'s    // complement + 1    return prevComplement(n, b) + 1;} // Driver codepublic static void Main(){    System.Console.WriteLine(prevComplement(25, 7));         System.Console.WriteLine(complement(25, 7));}} // This code is contributed// by mits
<?php// PHP program to find complement// of a number with any base b // Function to find (b-1)'s complementfunction prevComplement($n, $b){    $maxNum = 0;    $digits = 0;    $num = $n;         // Calculate number of digits    // in the given number    while((int)$n != 0)    {        $digits++;        $n = $n / 10;    }         // Largest digit in the number    // system with base b    $maxDigit = $b - 1;         // Largest number in the number    // system with base b    while($digits--)    {        $maxNum = $maxNum * 10 +                  $maxDigit;    }         // return Complement    return $maxNum - $num;} // Function to find b's complementfunction complement($n, $b){    // b's complement = (b-1)'s    // complement + 1    return prevComplement($n, $b) + 1;} // Driver codeecho prevComplement(25, 7), "\n";     echo(complement(25, 7)); // This code is contributed// by Smitha?>
<script> // Javascript program to find complement// of a number with any base b // Function to find (b-1)'s complement    function prevComplement(n , b) {        var maxDigit, maxNum = 0, digits = 0,        num = n;         // Calculate number of digits        // in the given number        while (n != 0) {            digits++;            n = parseInt(n / 10);        }         // Largest digit in the number        // system with base b        maxDigit = b - 1;         // Largest number in the number        // system with base b        while ((digits--) > 0) {            maxNum = maxNum * 10 + maxDigit;        }         // return Complement        return maxNum - num;    }     // Function to find b's complement    function complement(n , b) {        // b's complement = (b-1)'s        // complement + 1        return prevComplement(n, b) + 1;    }     // Driver code             document.write(prevComplement(25, 7)+"<br/>");         document.write(complement(25, 7)); // This code is contributed by todaysgaurav </script>
41
42
 
Kirti_Mangal
Mithun Kumar
ankthon
Smitha Dinesh Semwal
todaysgaurav
ruhelaa48
base-conversion
complement
Mathematical
School Programming
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.