用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
热门推荐
8 甄嬛传祝福语简短
10 求助短信生日祝福语简短
11 死人新年祝福语简短句
12 老板生日祝福语简短语
13 二胎祝福语简短霸气
14 姥爷生日祝福语简短精辟
15 圣诞简短祝福语给父母
16 学生毕业季祝福语简短
17 送给姐姐简短的祝福语
18 分手快乐祝福语简短