用C ++查找整数的补码
在本节中,我们将看到如何找到整数的1的补全。我们可以使用补码运算符非常快地完成此任务,但是它将产生32位补码值(4-bype整数)。在这里,我们需要n位数字的补码。
假设我们有一个数字说22。等效的二进制数是10110。补码的值是01001,它与9相同。现在问题来了,如何找到该值?首先,我们必须找到给定数量的位数。假设计数为c(此处22=5)。我们必须做51s。因此,这将是11111。为此,我们将1左移c次,然后从中减去1。将1向左移动5次后,将为100000,然后减去1,即为11111。之后,对11111和10110进行XOR运算以获得补码。
示例
#include <iostream>
#include <cmath>
using namespace std;
int findComplement(int n) {
int bit_count = floor(log2(n))+1;
int ones = ((1 << bit_count) - 1);
return ones ^ n;
}
int main() {
int number = 22;
cout << "One's Complement of " << number << " is: " << findComplement(number);
}输出结果
One's Complement of 22 is: 9
热门推荐
10 医院探望朋友祝福语简短
11 毕业祝福语简短女朋友
12 春节虎年爸妈祝福语简短
13 儿童毕业祝福语 简短6
14 开工仪式横幅祝福语简短
15 孩子日常祝福语大全简短
16 清晨寄语诗句祝福语简短
17 结婚送亲认亲祝福语简短
18 虎年喝酒拜年祝福语简短