我需要将负int转换为二进制字符串。我使用了两个补码。 例如,我的号码是-1。
首先,我将负数更改为正数1。 然后,转换为二进制字符串是0001。 接下来,我翻转字符串是1110。
问题是我不知道如何在字符串中添加1以获得1111。
我已经使用了位设置功能,如32位,如
bitset<32>(input).to_string();
原来是1111 1111 1111 1111 1111 1111 1111 1111.我只需要最后4个。我不知道如何取走其余部分。我需要32位,因为我的输入可以是一个很大的数字,如-300。
请帮助我。
答案 0 :(得分:2)
如果你完全能够拿到一个int,翻转标志然后翻转所有位,但你需要帮助添加一个,这是一个简单的解决方案!
在翻转位之前添加1 。那就是它!
你的号码是-1?添加一个,得到0.翻转符号,仍为0.转换为二进制字符串,0000。现在翻转位,你有1111 = -1!