题解
2024-05-12 19:38:28
发布于:北京
9阅读
0回复
0点赞
#include <iostream>
#include <bitset>
// 函数:获取一个整数的补码形式
std::bitset<32> getTwosComplement(int num) {
// 如果是正数,直接返回二进制形式
if (num >= 0) {
return std::bitset<32>(num);
} else {
// 计算补码
unsigned int absNum = static_cast<unsigned int>(-num);
std::bitset<32> absBitset(absNum);
// 按位取反
absBitset = ~absBitset;
// 加1
bool carry = true;
for (int i = 0; i < 32; ++i) {
bool tmp = absBitset[i] ^ carry;
carry = absBitset[i] & carry;
absBitset[i] = tmp;
}
return absBitset;
}
}
int main() {
int num;
std::cin>>num;
std::bitset<32> twosComp = getTwosComplement(num);
std::cout<< twosComp << std::endl;
return 0;
}
这里空空如也
有帮助,赞一个