我是初学者。我正在尝试获取存储在字符串中的二进制数的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/

10-13 08:30