在本节中,我们将看到如何找到整数的1的补全。我们可以使用补码运算符非常快地完成此任务,但是它将产生32位补码值(4-bype整数)。在这里,我们需要n位数字的补码。
假设我们有一个数字说22。等效的二进制数是10110。补码的值是01001,它与9相同。现在问题来了,如何找到该值?首先,我们必须找到给定数量的位数。假设计数为c(此处22 = 5)。我们必须做5 1s。因此,这将是11111。为此,我们将1左移c次,然后从中减去1。将1向左移动5次后,将为100000,然后减去1,即为11111。之后,对11111和10110进行XOR运算以获得补码。
示例#include
#include
using namespace std;
int findComplement(int n) {
int bit_count = floor(log2(n))+1;
int ones = ((1 <
return ones ^ n;
}
int main() {
int number = 22;
cout <
}
输出结果One's Complement of 22 is: 9