📜  查找整数的补码

📅  最后修改于: 2021-04-27 19:19:58             🧑  作者: Mango

给定整数n,找到整数的补码。

例子:

Input  : n = 5
Output : 2

Input  : n = 255
Output : 0

Input  : n = 26
Output : 5

解决此问题的有效方法如下:
1.查找给定整数中的位数
2.将给定的整数与2 ^ number_of_bits-1进行异或

C++
// CPP program to find 1's complement of n.
#include
using namespace std;
  
unsigned int onesComplement(unsigned int n)
{
   // Find number of bits in the given integer
   int number_of_bits = floor(log2(n))+1;
  
   // XOR the given integer with poe(2, 
   // number_of_bits-1 and print the result 
   return ((1 << number_of_bits) - 1) ^ n;
}
  
int main()
{
  unsigned int n = 22;
  cout << onesComplement(n);
  return 0;
}


Java
// Java program to find 1's complement of n.
class GFG {
      
    static int onesComplement(int n)
    {
          
        // Find number of bits in the 
        // given integer
        int number_of_bits = 
               (int)(Math.floor(Math.log(n) /
                             Math.log(2))) + 1;
  
        // XOR the given integer with poe(2,
        // number_of_bits-1 and print the result
        return ((1 << number_of_bits) - 1) ^ n;
    }
      
    // Driver code
    public static void main(String[] args)
    {
        int n = 22;
          
        System.out.print(onesComplement(n));
    }
}
  
// This code is contributed by Anant Agarwal.


Python3
# Python3 program to find
# 1's complement of n.
import math
  
def onesComplement(n):
  
    # Find number of bits in
    # the given integer
    number_of_bits = (int)(math.floor(math.log(n) /
                                math.log(2))) + 1;
  
    # XOR the given integer with poe(2, 
    # number_of_bits-1 and print the result 
    return ((1 << number_of_bits) - 1) ^ n;
  
# Driver code
n = 22
print(onesComplement(n))
  
# This code is contributed by Anant Agarwal.


C#
// C# program to find 1's complement of n.
using System;
  
class GFG {
      
    static int onesComplement(int n)
    {
          
       // Find number of bits in the given integer
       int number_of_bits = (int)(Math.Floor(
                   Math.Log(n) / Math.Log(2))) + 1;
       
       // XOR the given integer with poe(2, 
       // number_of_bits-1 and print the result 
       return ((1 << number_of_bits) - 1) ^ n;
    }
      
    //Driver code
    public static void Main ()
    {
          
        int n = 22;
          
        Console.WriteLine(onesComplement(n));
    }
}
  
// This code is contributed by Anant Agarwal.


PHP


输出 :

9