给定整数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