我是初学者。我正在尝试获取存储在字符串中的二进制数的2的补码sou2_reg='000000000000000000000000000000011'
。如果我要执行sou2_reg[32]
,它将给我最后一个1
。
现在我想做的是得到sou2_reg
的2的补码。我试过了,但是没有用。你能给我一些代码吗?非常感激
string twosComp(string number) {
if ( number == 0 ) { return "1"; }
if ( number == 1 ) { return "0"; }
if ( number % 2 == 0 ) {
return twosComp(number / 2) + "1";
}
else {
return twosComp(number / 2) + "0";
}
}
最佳答案
1)%
不适用于字符串
2)您的代码所做的就是找到自己的补充。二的补码是加一。
std::bitset <MYSIZE> bset(number);
bset.flip(); // one's complement
for (int i = 0; i < bset.size(); i ++) {
if (bset[i])
bset[i] = 0;
else {
bset[i] = true;
break;
}
}
return bset.to_string();
关于c++ - 获取作为字符串存储在输入文件中的二进制数的2'补码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16386414/